動作環境
Raspberry Pi2 + raspbian (python serialインストール済み)
Windows 7 pro 32bit
やりたいこと
RS-232C通信で使われるcontrol characterを扱うpython実装の確認
接続形態

USBシリアルケーブルを2本使用
- Win側 > SRC06-USB (バッファロー)
- Pi2側 > USB-RS232 (TFTEC JAPAN)
通信速度は 9600 bps
ソフト
- Windows側: RS232Cテストツール
-
<ACK>
や文字列を一緒に送信できる
-
code
Pi2側のコードは以下を実装してみた
160216commPrintable.py
# !/usr/bin/env python
import serial
import time
def isControlCharOtherThanCRLF(code):
if ord(code) == 13 or ord(code) == 10:
return False
return ord(code) < 32
def main():
con=serial.Serial('/dev/ttyUSB0', 9600, timeout=10)
rcvd=''
while 1:
code = con.read()
if len(code) > 0:
if isControlCharOtherThanCRLF(code):
print "control char:" + str(ord(code))
else:
rcvd = rcvd + code
if "\n" in rcvd or "\r" in rcvd:
print rcvd,
rcvd = ''
main()
結果
Win7側のRS232Cテストツールから以下の文字列を送信してみた。
test<CR><LF><ACK><NAK>test2<CR><LF>
Pi2側(上記コードを実行)では以下となった
test
control char:6
control char:21
test2