我如何通过串行端口向 LPC 1786 微控制器发送一些命令。为了完成此任务,我使用此代码打开串行端口。
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
女巫有点毁了我的一天。对于写作和阅读,我正在使用 write & read 功能。我敢打赌这与我打开串口的方式有关。但是有什么不对。我尝试了不同的设置,但收效甚微。在最好的情况下,我得到“?????1???”作为回应。而且大多数时候没有什么可读的。