私はRebol3 v3.0.99.4.20を使用していますが、これは/ Viewとシリアル機能の両方を持っています。私はポートを開いていますRebol3でシリアルポートを読み取る
:次に
ser: open serial://ttyUSB0/9600
は、私は私の非同期ハンドラを設定:
ser/awake: func [event /local p][
p: event/port
switch event/type [
lookup [open p]
connect [write p to-binary request]
read [
result: to-string p/data
close p
return true
]
wrote [read event/port]
]
false
]
私が今持っている問題は、私はからデータを読み取る方法を見つけ出すことができないということですシリアルポート。私はいつもser/dataのシリアルポートに書き込んだ最後のコマンドを返すだけです。例えば
:
>> ser: open serial://ttyUSB0/9600
>> write ser "debug on^/"
>> read ser
== "debug on^/"
これまでOKに見えますが、これはシリアルデバイスは、 '画面' を、Linuxのコマンドを使用してどのように動作するかです:
マイ入力:
debug on
シリアルデバイスの応答:
Debug messages enabled.
>
しかし、「デバッグメッセージを有効にしました」というメッセージは読めません。テキスト。
>> read ser
== "debug on^/"
>> wait ser
== none
>> read ser
== "debug on^/"
>> copy ser/data
== "debug on^/"
紛失しているものがわかりません。 Rebol2で
、それははるかに簡単ではなく、非同期です:
>> system/ports/serial
== [com1 com2 com4]
>> ser: open/no-wait serial://port3/9600/8/none/1
>> insert ser "debug on^/"
>> copy ser
== "debug on^/Debug messages enabled.^/>"
>> copy ser
== ""
最初のコピーはシリアルバッファをクリアするため、第二のコピーは何も返しません。データがシリアルポートにストリーミングされていた場合、追加のcopyコマンドはシリアルバッファから追加データを返します。しかし、Rebol3ではこのように動作しません。チャットグループのアーカイブにこの情報が見つかり