RaspberryPiでシリアル通信 1Raspberry Pi メモ2

二〇一五年睦月廿日

RaspberryPiでシリアル通信 2

前回:RaspberryPiでシリアル通信 1

 前回のシリアル通信の実験にて、PC→RPの通信がPC側EVENパリティ・RP側NONパリティでないとだめだったと書きましたが、今日改めて実験したところ、お互いのストップビットを2bitにすればお互いにEVENパリティで通信することができました。

 

※RP側
var
 SerComm : TBlockSerial;
 recvbyte : Byte;
 recvstr : String;


(中略)


 SerComm := TBlockSerial.Create;
 SerComm.Connect('/dev/ttyAMA0');
 SerComm.Config(9600, 8, 'E', 2, FALSE, FALSE); :

// 1バイトずつ読み込むなら
// recvbyte := SerComm.RecvByteEx(10);
// 1行ずつ読み込むなら
// recvstr := SerComm.RecvString(10);
 
 SerComm.Free;  

このエントリーをはてなブックマークに追加 Clip to Evernote
iliketrain at 23:37│Comments(5)TrackBack(0)Raspberry Pi 

トラックバックURL

この記事へのコメント

1. Posted by inte   2015年October04 13:52
inteと申します。私もLazarusでsynapseを使用してRaspberryPiでシリアル通信を試しています。
Windows7のPCでLazarusでsynapseを使用して通信はできました。
RaspberryPi上で構築すると、synapseのエラーが出ます。
Windowsに入れたsynafpc.pas,synaser.pas,synautil.pasをRaspberryPiにコピーではNGでしょうか?
あつかましいのですが、お教えていただけないでしょうか?
2. Posted by ハルピー   2015年October04 14:30
inteさんはじめまして。
どんなエラーか書かれていないのでなんとも… synaser自体はWindows・Debian共通だと思いましたので、コピーでも問題無かと思います。
3. Posted by inte   2015年October04 19:34
早速のご返事ありがとうございます。inteです。
エラーになったのは、synaser.pasのコンパイルSWの
{$IFDEF UNIX}の後の ,(500000, B500000),から
(4000000, B4000000)まで、です。
エラーメッセージはIdentifier not found"B500000"です。
synapseのバージョンは40です。
お使いのsynapseバージョンは幾つでしょうか?
以上よろしくお願いします。
4. Posted by ハルピー   2015年October04 20:28
 ありがとうございます。
 こちらのバージョンも40ですね。
 このエラーはラズパイ側でB500000以上のボーレートの定義がなされていないのが原因ですので、500000~4000000のボーレートを使用しないのであればsynaser.pasの該当行をコメントアウトもしくは削除、使用するのであれば下のリンク先の#56以降に書かれているようにtermios.incというファイルに定義を追加してやればいいようです。自分はコメントアウトで対処しました。

http://forum.lazarus.freepascal.org/index.php/topic,20481.msg141721.html#msg141721
5. Posted by inte   2015年October04 21:50
inteです。ありがとうございました。コンパイルできました。感謝です。

コメントする

名前
 
  絵文字
 
 
RaspberryPiでシリアル通信 1Raspberry Pi メモ2