新手急问labwindows中关于“串口读取数据问题”

abccba666 2009-07-24 09:27:49
用Labwindows编写一个仪器的串口读取程序。不知道从串口读出的数据如何转换成十进制数。仪器说明书中对数据描述如下:

“ion signals are represented as integers in units of 10e(-16) amps, and transmitted directly in hex format( four byte integers, 2's complement format, Least significant byte first) for maximum data throughput”

不明白说明书中传输的数据是什么样的? 我第一感觉是“FFFF”之类的字符串,但试了一下,发现结果不对。


char data_1[4];
InstallComCallback(1,LWRS_RECEIVE,4,0,0,NULL);//判断是否有数据
ComRd(1,data_1,4);

请问如何把data_1转换成十进制数,谢谢!



...全文
383 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
abccba666 2009-07-24
  • 打赏
  • 举报
回复
谢谢楼上的回复。但是我还是有点不明白。

你的意思我理解为:

data_1是符串,表示的是十六进制数,取值为'0'~'7FFFFFFF'。然后用函数来StrToInt(data_1)进行转换。

int StrToInt(char * str)
{
int value = 0;
int sign = 1;
int radix=16;
if(*str == '-')
{sign = -1;
str++;
}
while(*str)
{
if(radix == 16)
{
if(*str >= '0' && *str <= '9')
value = value * radix + *str - '0';
else
value = value * radix + (*str | 0x20) - 'a' + 10;
}
else
value = value*radix + *str - '0';
str++;
}
return sign*value;
}

不知对不对?谢谢!

Treazy 2009-07-24
  • 打赏
  • 举报
回复
16进制
(4字节整数,2进制的补充形式,低字节在前)达到最大吞吐量

比如收到数据DWORD Data = 0x12345678
LSb(Data) = 0x78

Jagen在路上 2009-07-24
  • 打赏
  • 举报
回复
十六进制格式的4字节整数。楼主自己写一个十六进制转十进制的程序就行了。
Treazy 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 abccba666 的回复:]
目前我就不是很清楚仪器发送给计算机的数据是什么格式的。对传输的数据的描述主要就是这句话:
"transmitted directly in hex format( four byte integers, 2's complement format, Least significant byte first)"[直接以16进制的格式传输(4个字节,2的补码,最不重要的位在前)]。

我一次读入4个字节,由于不清楚发送的数据是什么格式的,所以不知道后面该怎么将其转换成十进制数。
[/Quote]
不是最不重要的位在前,而是低字节在前吧

你都不知道格式,协议没有吗?那做什么转换啊,不是瞎折腾嘛!
直接输出数据来看看是什么东西(输出内存16进制数据)!
我猜应该仪器发送的数据都是4个字节一组代表一个数据!
abccba666 2009-07-24
  • 打赏
  • 举报
回复

目前我就不是很清楚仪器发送给计算机的数据是什么格式的。对传输的数据的描述主要就是这句话:
"transmitted directly in hex format( four byte integers, 2's complement format, Least significant byte first)"[直接以16进制的格式传输(4个字节,2的补码,最不重要的位在前)]。

我一次读入4个字节,由于不清楚发送的数据是什么格式的,所以不知道后面该怎么将其转换成十进制数。
nouce 2009-07-24
  • 打赏
  • 举报
回复
学习了,先顶!
Treazy 2009-07-24
  • 打赏
  • 举报
回复
是不是你的串口发送的是字符串,比如"-123"代表整数-123
你接收到后将其转换成整形数?

如果确实的话,那StrToInt这个函数是有效的

大前置 2009-07-24
  • 打赏
  • 举报
回复
帮顶

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧