AT指令通过UDP协议直接发送十六进制数 10

华为GPRS模块向服务器发送数据,UDP协议。使用AT%IPSEND="XXXX"指令,但只能作为字符发送,直接发送十六进制数怎么办?... 华为GPRS模块向服务器发送数据,UDP协议。使用AT%IPSEND="XXXX"指令,但只能作为字符发送,直接发送十六进制数怎么办? 展开
 我来答
blakli123
2012-11-11 · TA获得超过272个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:249万
展开全部
这个。。。为了避免在信息里不能出现保留字,所以它只能通过字符发送,比如有个0x0d 0x0a那就完了,自己写个转换函数么
void UncharToHex(char *data,unsigned char sourcedata)
{
unsigned char a = sourcedata >> 4;
data[0] = a > 9? 'A'+ a -10:'0' + a;
a = sourcedata & 0x0f;
data[1] = a > 9? 'A'+ a -10:'0' + a;
}
data是出口参数,当指针传递用- -!
粤琛非z
2012-11-09 · TA获得超过1564个赞
知道小有建树答主
回答量:866
采纳率:100%
帮助的人:624万
展开全部
是编程发的还是用串口助手发的?
编程的话自己发字符串就好了,串口助手发的话用16进制模式发送:
41 54 25 49 50 53 45 4E 44 3D 22 xx xx 22 0D 0A
把里面的xx xx换成你要发送的字符的ascii码就好了,注意不要超过1024个字符。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mrzhanglei1
2012-11-09 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:118万
展开全部
把16进制变成ASC字符串,如0xF3写成"0XF3H",接收端在变成16进制.
"0X是起始头","H"是结束,"F3"是数据.
注意:变成字符串格式后,可能会和文本中的字符串混淆,定义的头和尾越长,混淆的几率越小,但效率越低.
自己调整啦
追问
你这个方法不行,0X和后面的H也被当做字符给发出去了
追答
晕.
1.发送方吧16进制的1个字节,变成你自己定义结构的字符串
如:1个16进制的F3,变成字符串"0XF3H",当然也可以变成"StF3End",随你定义.
2.接收方把字符串再转换成1个16进制的字节.
去掉头和尾,中间剩的"F3"字符串,用strtol函数就换成1个16进制的字符了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式