Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用Arduino正确发送无符号长字节?_C_Arduino Uno_Serial Communication - Fatal编程技术网

C 如何使用Arduino正确发送无符号长字节?

C 如何使用Arduino正确发送无符号长字节?,c,arduino-uno,serial-communication,C,Arduino Uno,Serial Communication,我正在测试与Arduino的串行通信,如下所示: timeStamp = 0xFFFFFFFF; Serial.flush(); Serial.write((uint8_t*)timeStamp, 4) 另一方面,我用C程序中的read(fd,&rx,4)读取这个字节。我希望总是读取相同的值,但不是读取0xffffffff而是读取0x37066bf,因此解码有问题。Ps:我已将串行端口设置为读取原始字节,因此没有专用字节来编码回车符或其他特殊字符。我相信您的问题在于串行写入(

我正在测试与Arduino的串行通信,如下所示:

  timeStamp = 0xFFFFFFFF;
  Serial.flush();   
  Serial.write((uint8_t*)timeStamp, 4)

另一方面,我用C程序中的
read(fd,&rx,4)
读取这个字节。我希望总是读取相同的值,但不是读取
0xffffffff
而是读取
0x37066bf
,因此解码有问题。Ps:我已将串行端口设置为读取原始字节,因此没有专用字节来编码回车符或其他特殊字符。

我相信您的问题在于
串行写入((uint8_t*)时间戳,4)
总是从内存中发送4个字节,以地址
0xffffff
开头。这是因为
timeStamp
不是指针,但您将其强制转换为指针。请尝试转换
timeStamp
的地址:
Serial.write((uint8_t*)(&timeStamp)),4)并查看是否有效

我相信您的问题在于您的
串行写入((uint8_t*)时间戳,4)
总是从内存中发送4个字节,以地址
0xffffff
开头。这是因为
timeStamp
不是指针,但您将其强制转换为指针。请尝试转换
timeStamp
的地址:
Serial.write((uint8_t*)(&timeStamp)),4)并查看是否有效

您需要发布发送和接收代码,并提供更多关于这两个平台的数据。例如,
read()
实际返回的值是什么?我强烈怀疑您忽略了
read()
中的实际返回值,只是希望它能够工作。您需要确信hello world测试正在工作。发送一些字符串,读取循环中的字符并打印它们。这行吗?电缆掉出来了吗?也许在PC端使用终端软件。通常需要禁用硬件/软件流控制。发送字符将很容易测试。哦!你发送FFFFFF然后得到垃圾。这有波特率的味道。再次使用关闭流量控制的终端应用程序。反复发送Hello World并调整术语设置,直到它开始正确显示。然后让你的应用程序读做同样的事情。什么是
无符号长字节
,因为你没有听说过。你需要发布发送和接收代码,并提供更多关于这两个平台的数据。例如,
read()
实际返回的值是什么?我强烈怀疑您忽略了
read()
中的实际返回值,只是希望它能够工作。您需要确信hello world测试正在工作。发送一些字符串,读取循环中的字符并打印它们。这行吗?电缆掉出来了吗?也许在PC端使用终端软件。通常需要禁用硬件/软件流控制。发送字符将很容易测试。哦!你发送FFFFFF然后得到垃圾。这有波特率的味道。再次使用关闭流量控制的终端应用程序。反复发送Hello World并调整术语设置,直到它开始正确显示。然后让你的应用程序读做同样的事情。什么是
无符号长字节
,因为我没有听说过。我很高兴听到这一点,而且没有严重的问题与波特率,硬件/软件流量控制等有关,就像你问题的评论中提到的家伙。我将根据这些评论制作一个小的清单,以供将来使用串行通信,因为它们提供了非常好的要点。我之所以看到这个缺失,是因为我在某些情况下也犯了同样的错误(一次被咬,两次害羞):。我很高兴听到这一点,而且没有像你的问题评论中提到的那样,与波特率、硬件/软件流控制等相关的严重问题。我将根据这些评论制作一个小的清单,以供将来使用串行通信,因为它们提供了非常好的要点。我之所以看到缺失,是因为我在某些情况下也犯了同样的错误(一次被咬,两次害羞):。