08/04/14 23:46:01
>>480
まあシリアルなんてLabviewでも使えばいいのかもしれないけどね
octaveの場合
cygwin版は
f=fopen('/dev/ttyS0','r+');
とやればCOM1が開いて
fprintf(f,'ATI\n');
とやれば書き込める場合があるんだけど、読み出せない
id=fscanf(f,'%s')
とするとハングする。のでfopenした直後に
fcntl(f,F_SETFL,O_NONBLOCK)
とやる必要がある
(ノートなんかの内蔵モデムの多くはソフトモデムで、まともにATコードが通らない場合がある)
MSVC版とMingw版はこの
fcntl(f,F_SETFL,O_NONBLOCK)
というのが通らない。
fcntl無しでf=fopen('COM1','r+')してみると、エラーも無くファイルハンドル=3が返ってくる
COM4とか存在しないポートを開こうとするとエラーが返るのでCOM1をちゃんと開いているように見える。
これでシリアル通信が出来るかというと、どうもそうでは無いようだった。
fscanfしてもどっかに余ってるバッファが返ってくる。
Cで書いてdllでも作ればいいんだろうけど