파이썬에서 시리얼 통신
개요
개인적으로 임베디드 개발에서는 디버깅이 어렵다고 느끼고 있으며 대부분의 경우 시리얼 통신을 실시하여 PC에 어떠한 데이터를 보내 확인한다. 그러나 직렬 통신 자체가 이상한 경우 프로그램의 어느 경로를 통과했는지 등은 LED를 빛나게 확인할 수밖에 없다. 또한 Arduino IDE에는 직렬 통신을 사용하여 데이터를 수신하고 표시하고 데이터를 전송할 수있는 도구가 포함되어 있지만 데이터 전송은 문자로 보내지므로 원시 데이터를 보내기가 어렵습니다. ?).
따라서 앞으로 Python에서 직렬 통신을 수행하고 LED를 사용하여 직렬 통신이 올바르게 수행되는지 확인하십시오.
Arduino Uno의 프로그램
Arduino Uno에서 다음 프로그램을 실행합니다.
main.c
#include "serial.h"
int putc(unsigned char c) {
if (c == '\n') {
serial_send_byte('\r');
}
return serial_send_byte(c);
}
unsigned char getc() {
return serial_recv_byte();
}
void setout();
void turnon();
void turnoff();
int main(void) {
serial_init();
setout(); // シリアルの初期化
putc('D'); // 1文字出力
char c = getc(); // 1文字入力を待つ
turnon(); // LEDを点灯
putc(++c); // 受信した文字をインクリメントし,シリアルで出力
putc('E'); // 1文字出力
c = getc(); // 1文字入力を待つ
turnoff(); // LEDを消灯
putc(++c); // 受信した文字をインクリメントし,シリアルで出力
putc(++c); // 受信した文字をインクリメントし,シリアルで出力
while(1){}
코멘트에서 알 수 있듯이 Arduino는 단일 문자를 출력 한 다음 수신 -> 전송을 두 번 반복하여 처리를 종료합니다. 그런 다음 첫 번째 수신에서 LED가 켜지고 두 번째 수신에서 LED가 꺼집니다. 따라서, 만일 송수신할 수 없는 경우에서도, LED의 점등/소등으로 어디까지 프로그램이 실행되었는지를 알 수 있다.
파이썬에서 시리얼 통신
파이썬에서 직렬 통신을 수행하기 위해
pyserial
를 pip로 설치하십시오.pip3 install pyserial
그런 다음 Arduino 프로그램에 따라 데이터를 송수신합니다.
test.py
import serial
import time
ser = serial.Serial('/dev/cu.usbmodem142101', 9600, timeout = 1)
while True:
data: bytes = ser.read();
if len(data) > 0:
break
int_data = int.from_bytes(data, 'big')
print(data)
print("data1 = {}".format(int_data)) # Dを読む
time.sleep(0.5)
ser.write(bytes([65])) # aを書く
time.sleep(0.5)
data: bytes = ser.read() # bを読む
int_data = int.from_bytes(data, 'big')
print(data)
print(len(data))
print("data2 = {}".format(int_data))
time.sleep(0.5)
data: bytes = ser.read() # Eを読む
print(data)
time.sleep(0.5)
ser.write(bytes([67])) # cを書く
time.sleep(0.5)
data: bytes = ser.read() # d
print(data)
특히 해설은 필요 없다고 생각하지만, 시리얼 통신은 느리기 때문에, 송수신 중에 0.5초의 슬립을 넣고 있다. 이것을 넣지 않으면 실행이 너무 빨리 보이지 않습니다.
이 구현은 다음 명령으로 시도 할 수 있습니다.
>git clone https://github.com/hiro4669/iosv.git
>cd iosv
>cd serial_py
>make
>make write
>python3 test.py
Reference
이 문제에 관하여(파이썬에서 시리얼 통신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiro4669/items/5ba2e35f210c77afa1bb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)