シリアルポートを介してLPC1786マイクロコントローラーにいくつかのコマンドを送信します。このタスクを実行するために、このコードを使用してシリアルポートを開きます。
struct termios tio;
int tty_fd;
memset(&tio,0,sizeof(tio));
tio.c_iflag = 0;
tio.c_oflag = 0;
tio.c_cflag = CS8|CREAD|CLOCAL; // 8n1, see termios.h for more information
tio.c_lflag = 0;
tio.c_cc[VMIN] = 1;
tio.c_cc[VTIME] = 5;
tty_fd = open(device, O_RDWR | O_NONBLOCK);
cfsetospeed(&tio, B9600); // 115200 baud
cfsetispeed(&tio, B9600); // 115200 baud
tcflush(tty_fd, TCIFLUSH);
これは、(iMX53)を使用する組み込みLinuxシステム用です。PCでコードをコンパイルして実行するとき。私はこれを手に入れます:
sent: ?
recieve: Sinchronized<CR><LF>
sent: Sinchronized<CR><LF>
recieve: Synchronized<CR>OK<CR><LF>
sent: 16000<CR><LF>
recieve: 16000<CR>OK<CR><LF>
魔女は元気です。クロスコンパイルしてシステムにアップロードすると、これが表示されます。
Sent: ?
HEX: 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0xA 0xA 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0xA
ASCII: SynchronizedSynchronizedOKOKnchronized1K024K024chronized1
Sent: ?
HEX: 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0x30 0xA 0xA 0x31 0xA 0xA 0xA 0xA 0xA 0xA 0x34 0xA 0xA 0x31 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0A
ASCII: 014141hronized1111111ronized1
魔女は私の一日を台無しにします。書き込みと読み取りには、書き込みと読み取りの関数を使用しています。これは私がシリアルポートを開いている方法と関係があるに違いありません。しかし、何が悪いのか。さまざまな設定を試しましたが、ほとんど成功しませんでした。最良の場合、応答として「?????1???」が表示されます。そして、ほとんどの場合、読むべきものは何もありません。