相关疑难解决方法(0)

如何从C中的串口打开,读取和写入?

我对读取和写入串口有点困惑.我在Linux中有一个使用FTDI USB串行设备转换器驱动程序的USB设备.当我插入它时,它会创建:/ dev/ttyUSB1.

我认为在C中打开和读/写它很简单.我知道波特率和奇偶校验信息,但似乎没有标准吗?

我错过了什么,或者有人能指出我正确的方向吗?

c linux serial-port

129
推荐指数
2
解决办法
37万
查看次数

如何在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)

serial-port binary-data embedded-linux termios

14
推荐指数
1
解决办法
2万
查看次数

字节流中数据包的识别

我在与加速度计传感器的通信方面遇到了一些问题。传感器连续输出约 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),也是数据包开始的标识。我对针对外部设备进行编程还很陌生,无法真正掌握如何将校验和用作包开始的标识符(校验和不会一直更改吗?)。这是识别数据包开始的常用方法吗?有谁知道如何解决这个问题?

任何帮助将不胜感激。

checksum serial-port serial-communication packet

5
推荐指数
1
解决办法
2544
查看次数