USB-シリアル変換ケーブルを試してみた
Raspi-Picのプログラム(JAVA)はPCで開発し、Raspiで動作確認するという方法を採用しています。I2Cの時はbcmlib_for_java(↓これです)がRaspiでないと動かないので、PC上の開発に大きな制限がありました。
PCとRaspiにインストールしたUARTライブラリのVersionが異なっていたらしく、RXTXcomm.jarを切り替えなくてはならないのですが、(大きな支障では無いので)そのまま作業を続けることにしました。
Amazonで手に入れたUSB-シリアル変換ケーブル(↑こんな奴 ¥200で売られているのは非正規品かも・・・)をPC(Windows10)に接続してみました。するとドライバでエラー(コード10)を起こして動いてくれません。orz
以下のページに記された修正方法(最後の修正プログラムを適用)で認識してくれるようになりました。
尚、RaspiではこのUSB-シリアル変換ケーブルは問題なく認識されます。(/dev/ttyUSB0)
Commクラスに二つのThread(送信用と受信用)を設けて、PCとRaspiでループバックテストO.Kの確認がとれました。(パチパチパチ~)
(↓こんな感じです)
private class ReceiveThread extends Thread {
public void run() {
int receive = 0;
System.out.println("Receive run");
while (true) {
if( receive_ringbuff.full )
{
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
Logger.getLogger(Comm.class.getName()).log(Level.SEVERE, null, ex);
}
}
else
{
try {
receive = in.read();
} catch (IOException ex) {
Logger.getLogger(Comm.class.getName()).log(Level.SEVERE, null, ex);
}
receive_ringbuff.write((byte)receive);
}
}
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
追伸
リング・バッファはThread Safeなのでこういうときには重宝します。