Silicon Labs CP210x USB-UARTチップを使用するシリアルデバイスと通信しようとしています。私はドライバをインストールし、メーカーが提供するグラフィカルユーザインタフェースを使用していくつかのデバイスと正常に通信できます。libserialportがポートにデータを書き込まない
しかし、私は現在、libserialportを使用して、シリアル仕様のある特定のデバイスと通信しようとしています。私のコードは以下の通りです:
// find list of available devices
sp_return status = sp_list_ports(&ports);
// list available ports
int j = 0;
for (j = 0; ports[j]; j++) {
printf("Found port %d: %s\n", j, sp_get_port_name(ports[j]));
}
// connect to serial port
struct sp_port *port = ports[1]; // /dev/cu.SLAB_USBtoUART
sp_set_baudrate(port, 9600);
sp_set_bits(port, 8);
sp_set_stopbits(port, 1);
sp_set_parity(port, SP_PARITY_NONE);
status = sp_open(port, SP_MODE_READ_WRITE);
// attempt first write
uint8_t buf[] = {0x02, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03};
status = sp_blocking_write(port, buf, 10, 0);
printf("Bytes written: %d\n", status);
コードは、私は明確にするためにそれを削除しているが、各機能が正常に返すことを確認するためにチェック広範囲の誤差を含んでいます。上記のコードは、10バイトをシリアルポートに書き込んだことを正常に表示します。
しかし、デバイスを式から削除するには、オシロスコープとパルス検出器でシリアル信号を接続し、シリアルラインに書き込まれているバイトがないことを確認してください(libserialportが書き込んだ10バイト)。
誰もこの問題に遭遇しましたか?これはOS X 10.11で動作しています
私はデバイスドライバを再インストールし、手動でecho
とcat
でバイトを書き込もうとしましたが、最終結果はワイヤに書き込まれていません。ヘッダファイルから