LoginSignup
0
0

More than 5 years have passed since last update.

line monitor > コア部分 (v0.9) > <ACK>などの単独のコントロールキャラクタの扱い追加

Last updated at Posted at 2016-02-16

line monitor
http://qiita.com/7of9/items/028556c5a819a6a8de96

http://qiita.com/7of9/items/5e6a8c9f60b758c3e640
にて問題のあった<ACK>などの扱いを対応。

関連 http://qiita.com/7of9/items/eee48db0127ad68790f2

code (v0.9)

v0.9 @ github

変更前

def comrelay(rcvd, srccom, dstcom):
    str1 = srccom.read()
    if (len(str1) > 0):
        rcvd = rcvd + str1
    if "\n" in rcvd or "\r" in rcvd:
        print "rcvd=", rcvd
        dstcom.write(rcvd)
        return rcvd, True # new line = true

    return rcvd, False # new line = false

変更後

def isControlCharOtherThanCRLF(code):
    if ord(code) == 13 or ord(code) == 10:
        return False
    return ord(code) < 32 

def comrelay(rcvd, srccom, dstcom):
    str1 = srccom.read()
    if len(str1) > 0 and isControlCharOtherThanCRLF(str1):
        print "rcvd:control char:" + str(ord(str1))
        dstcom.write(rcvd)
        return ".", True # new line = true
    if (len(str1) > 0):
        rcvd = rcvd + str1
    if "\n" in rcvd or "\r" in rcvd:
        print "rcvd=", rcvd
        dstcom.write(rcvd)
        return rcvd, True # new line = true

    return rcvd, False # new line = false

備考

  • <ACK>などを受けたらとりあえず反対側のRS-232Cへ送信するようにしている。
  • UDPへの送信は"."という文字にしているが、TODOにあるように"<ACK>"などの文字としたい気がする
  • またはUnity側のソフト対応で""に変換するなども必要かも

とりあえず明日使いたいので上記で対応とする。

fix bug

送信処理が間違っていた。
v0.9タグを付け直した。

v0.9 @ github

以下が動作するコード。
str1を送信するべきところをrcvdを送信していた。

def isControlCharOtherThanCRLF(code):
    if ord(code) == 13 or ord(code) == 10:
        return False
    return ord(code) < 32 

def comrelay(rcvd, srccom, dstcom):
    str1 = srccom.read()
    if len(str1) > 0 and isControlCharOtherThanCRLF(str1):
        print "rcvd:control char:" + str(ord(str1))
        dstcom.write(str1)
        return ".", True # new line = true
    if (len(str1) > 0):
        rcvd = rcvd + str1
    if "\n" in rcvd or "\r" in rcvd:
        print "rcvd=", rcvd
        dstcom.write(rcvd)
        return rcvd, True # new line = true

    return rcvd, False # new line = false
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0