我对读取和写入串口有点困惑.我在Linux中有一个使用FTDI USB串行设备转换器驱动程序的USB设备.当我插入它时,它会创建:/ dev/ttyUSB1.
我认为在C中打开和读/写它很简单.我知道波特率和奇偶校验信息,但似乎没有标准吗?
我错过了什么,或者有人能指出我正确的方向吗?
我阅读了以下链接和其他来源,但没有找到我的问题的答案.
我通过串口与嵌入式设备通信.默认情况下,嵌入式Linux使用此端口作为终端.但我想通过端口传输二进制数据(服务数据包).我的/ etc/inittab文件有一个"getty"调用: console :: respawn:/ sbin/getty 115200 ttyS0
我还有/ etc/passwd文件,其中"admin"用户在登录后启动我的"cli"应用程序: admin:8Mt/Jtxcyg8AY:1000:0:admin:/ tmp:/ tmp/cli
运行程序之前我的默认ttyS0设置是:
~ # stty -a
speed 115200 baud;stty: standard input
line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ^J;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; …Run Code Online (Sandbox Code Playgroud) 我在与加速度计传感器的通信方面遇到了一些问题。传感器连续输出约 8000 个读数/秒。传感器通过适配器插入 USB 端口并显示为 com4。我的问题是我似乎无法从字节流中挑选出传感器读取数据包。数据包大小为 5 个字节,格式如下:
High nibble Low nibble
Byte 1 checksum, id for packet start X high
Byte 2 X mid X low
Byte 3 Y high Y mid
Byte 4 Y low Z high
Byte 5 Y mid Y low
Run Code Online (Sandbox Code Playgroud)
X, y, z 是加速度。
在传感器的文档中,它指出第一个字节中的高半字节是校验和(计算的 Xhigh+Xlow+Yhigh+Ylow+Zhigh+Zlow),也是数据包开始的标识。我对针对外部设备进行编程还很陌生,无法真正掌握如何将校验和用作包开始的标识符(校验和不会一直更改吗?)。这是识别数据包开始的常用方法吗?有谁知道如何解决这个问题?
任何帮助将不胜感激。