迪文科技论坛

 找回密码
 立即注册
搜索
查看: 557|回复: 28

【提问】c51开发,电话号码串口发送

[复制链接]

2

主题

18

回帖

159

积分

注册会员

Rank: 2

积分
159
发表于 2025-1-20 17:02:04 | 显示全部楼层 |阅读模式
在迪文屏的地址空间输入11位的电话号码,通过ReadDGUS读取这个地址空间的数据到short 数组,这个是一个连续的16进制数,现在要通过串口发送这组数据到其他设备,发送后为输入的11为号码,

再串口发送前,进行了16进制转换10进制,但是无法存储64位的数据,存不了11位的整数,这种问题怎么解决,怎么使用超长整型在keil-c51里面??
现在可以转换成10位的数字并发送,
求指点???????
回复

使用道具 举报

0

主题

26

回帖

159

积分

注册会员

Rank: 2

积分
159
发表于 2025-1-20 19:12:17 | 显示全部楼层
你用字符串发送,这种超长位数据用字符串就行
回复

使用道具 举报

2

主题

18

回帖

159

积分

注册会员

Rank: 2

积分
159
 楼主| 发表于 2025-1-21 09:38:28 | 显示全部楼层
Rye4869cjxy 发表于 2025-1-20 19:12
你用字符串发送,这种超长位数据用字符串就行

我用的是字符串发送啊,但是发送之前还得16进制转换成10进制这里需要有一个变量可以临时存储超长整数啊??我用char存不了
回复

使用道具 举报

0

主题

628

回帖

9573

积分

论坛元老

Rank: 8Rank: 8

积分
9573
发表于 2025-1-21 11:36:38 | 显示全部楼层
2365194214 发表于 2025-1-21 09:38
我用的是字符串发送啊,但是发送之前还得16进制转换成10进制这里需要有一个变量可以临时存储超长整数啊? ...

可以使用数组来模拟超长整型,或者使用两个unsigned long变量来组合成一个超长整型。
回复

使用道具 举报

2

主题

18

回帖

159

积分

注册会员

Rank: 2

积分
159
 楼主| 发表于 2025-1-21 14:32:03 | 显示全部楼层
jufang@dwin.com 发表于 2025-1-21 11:36
可以使用数组来模拟超长整型,或者使用两个unsigned long变量来组合成一个超长整型。 ...

想过这种,通过两个32位的unsigned long变量来模拟unsigned long long变量,但是在进制转换的时候要怎么写??
例如19995170067这个号码,输入到屏幕上,读下来是 0x04,0xA7,0xCE,0x15,0x13一个数组,我又转换成4A7CE1513,进行进制转换,用这种方法,0x04这位就转换不了,超出计算长度了,
如果用两个unsigned long变量 ,那怎么保证值是对的,转换不过来,
太难了。
这个屏幕在地址空间读下来就是10进制转换成16进制的,结果用不了超长整型,这无解啊,
求高手指点,或者有没有相应类似的例程,参考一下。
回复

使用道具 举报

0

主题

3

回帖

71

积分

注册会员

Rank: 2

积分
71
发表于 2025-1-22 11:11:13 | 显示全部楼层
本帖最后由 seawolf 于 2025-1-22 11:14 编辑
2365194214 发表于 2025-1-21 14:32
想过这种,通过两个32位的unsigned long变量来模拟unsigned long long变量,但是在进制转换的时候要怎么 ...

"例如19995170067这个号码,输入到屏幕上,读下来是 0x04,0xA7,0xCE,0x15,0x13一个数组"
19995170067转成数组是十六进制的字符串"0x31,0x39,0x39,0x39,0x35,0x31,0x37,0x30,0x30,0x36,0x37"
uint_8 phonenumber[11] = {0x31,0x39,0x39,0x39,0x35,0x31,0x37,0x30,0x30,0x36,0x37};
phonenumber[0]  0x31
phonenumber[1]  0x39
...
phonenumber[10] 0x37


回复

使用道具 举报

2

主题

18

回帖

159

积分

注册会员

Rank: 2

积分
159
 楼主| 发表于 2025-1-22 15:34:24 | 显示全部楼层
seawolf 发表于 2025-1-22 11:11
"例如19995170067这个号码,输入到屏幕上,读下来是 0x04,0xA7,0xCE,0x15,0x13一个数组"
19995170067转成 ...

没懂啊???,
19995170067转成数组是十六进制的字符串"0x31,0x39,0x39,0x39,0x35,0x31,0x37,0x30,0x30,0x36,0x37"这是怎么转换的?  迪文屏数字键盘输入值??
但是用ReadDGus这个方法读不出来吧,读出来的是0x04,0xA7,0xCE,0x15,0x13这个。
用串口读命令,地址框的也是0x04,0xA7,0xCE,0x15,0x13这个。我试过了
如果是0x31,0x39,0x39,0x39,0x35,0x31,0x37,0x30,0x30,0x36,0x37,就根本不用进值转换了,设一个方法提取出来就行。
总之怎么能用c51代码从地址空间读出这个呢?
-->“0x31,0x39,0x39,0x39,0x35,0x31,0x37,0x30,0x30,0x36,0x37”
求解???
回复

使用道具 举报

2

主题

18

回帖

159

积分

注册会员

Rank: 2

积分
159
 楼主| 发表于 2025-1-22 15:45:47 | 显示全部楼层
seawolf 发表于 2025-1-22 11:11
"例如19995170067这个号码,输入到屏幕上,读下来是 0x04,0xA7,0xCE,0x15,0x13一个数组"
19995170067转成 ...

0x31,0x39,0x39,0x39,0x35,0x31,0x37,0x30,0x30,0x36,0x37 这个是hex值
回复

使用道具 举报

0

主题

227

回帖

1945

积分

金牌会员

Rank: 6Rank: 6

积分
1945
发表于 2025-1-24 10:42:02 来自手机 | 显示全部楼层
本帖最后由 紫狐 于 2025-1-24 10:48 编辑

例如19995170067这个号码,输入到屏幕上,读下来是 0x04,0xA7,0xCE,0x15,0x13一个数组"这就是5个char拼接一下就是了。不一定非要限定用一个变量存储,存数组也可以的。
回复

使用道具 举报

2

主题

18

回帖

159

积分

注册会员

Rank: 2

积分
159
 楼主| 发表于 2025-1-24 14:28:23 | 显示全部楼层
紫狐 发表于 2025-1-24 10:42
例如19995170067这个号码,输入到屏幕上,读下来是 0x04,0xA7,0xCE,0x15,0x13一个数组"这就是5个char拼接一 ...

这个数组无论读成什么都无所谓的,可以读到,这是必然,  关键是把这个数组还原回之前的电话号码?,
0x04,0xA7,0xCE,0x15,0x13 这个值是必然,
怎么还原19995170067成这个呢??   用进制转换就会因为数据类型不够计算。 转换不成功。,
我对9位数以内的号码都可以成功了,超了就不行,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-4-17 03:04 , Processed in 0.054095 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表