gpt4 book ai didi

c - 辨别值 255 是真实数据还是错误输出

转载 作者:行者123 更新时间:2023-11-30 14:25:55 25 4
gpt4 key购买 nike

我正在使用微 Controller 将无符号 8 位数据发送到 Matlab。每当出现任何数据丢失时,Matlab 都会显示值 255。与 WIN32 USB API 接口(interface)的 Matlab 程序的底层代码显示,对于一系列错误,将返回值 -1。由于数据是无符号8位类型,因此-1值将被解释为255,这解释了为什么当发生传输错误时显示后一个数字。

那么,如何判断值 255 代表真实数据还是错误输出?

谢谢并欢呼!

最佳答案

(这只是部分答案。)

这听起来类似于 C 标准字符输入的完成方式。

fgetc() 函数返回一个 int 结果,它是值 EOF(通常是 -1 >),如果出现错误或没有更多数据可供读取,或成功读取的字符值,将被视为 unsigned char 并转换为 int .

如果将 fgetc() 返回的值存储在有符号的 char 对象中(请注意,普通的 char 可以是有符号的,也可以是无符号的),值 -1 可以指示 fgetc() 返回 EOF 它成功读取了值为 0xFF 的字节。这就是这种带内信令的问题所在。区分错误指示和恰好看起来像错误指示的有效数据可能很困难。

使用fgetc(),有两种方法可以解决这个问题。您可以将结果存储在 int 中,这意味着您将获得 EOF (-1) 和 0xFF (255) 的不同值。或者您可以在调用fgetc()后调用feof()ferror()函数;如果其中一个返回真值,您就知道 EOF 指示实际错误或文件结束条件。

您没有告诉我们足够多的关于您的微 Controller 和 Matlab 之间的接口(interface)的信息,我们不知道如何进行这种区分。如果您可以调用其他一些函数,例如类似于 feof()ferror(),您可以在得到 -1 或 255 结果时调用它来确定什么这个结果意味着。或者,如果可能的话,您可以考虑修改您正在使用的接口(interface),使其返回大于一字节的结果,以便错误指示 -1 与所有可能的有效数据值不同。

关于c - 辨别值 255 是真实数据还是错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com