OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9561|回复: 8

串口发送8位十六进制数据给GPRS

[复制链接]

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-5-21
在线时间
1 小时
发表于 2014-11-20 15:00:02 | 显示全部楼层 |阅读模式
5金钱
我在使用sim300模块来发送短信,最后需要发送0x1a给sim300,现在不能发送。
现在在用正点原子sim900的底层,只用了串口2,
[mw_shl_code=c,true] if(m) {m=0; u2_printf("at+cops?\r");//发送指令查询当前服务状态 delay_ms(1000); u2_printf("AT+CMGF=1\r");//设置英文方式发送,当然也可以用中文的AT+CMGF=0,不过发送方式不太一样,具体请看相关程序 delay_ms(1000); u2_printf("AT+CMGS=\"13664178711\"\r");//发送指令设置10086电话是短信发送的号码 delay_ms(1000); u2_printf("103\r");//103 为发送的内容 delay_ms(5000); u2_printf("%x",l);//以0x1a来结束,表示内容结束,发送短信 delay_ms(1000); }[/mw_shl_code]
其中倒数第二行 l 定义为 char l=0x1a;发送完成之后发现是吧1和a的ascall码发送了,我如果想发送0x1a应该怎么写?

最佳答案

查看完整内容[请看2#楼]

发0X1A的时候,不能调用printf,只能直接写DR寄存器。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-11-20 15:00:03 | 显示全部楼层
发0X1A的时候,不能调用printf,只能直接写DR寄存器。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2013-11-7
在线时间
23 小时
发表于 2014-11-20 15:04:13 | 显示全部楼层
u2_printf("0x%x",l);//以0x1a来结束,表示内容结束,发送短信   
这个输出0x1A
 u2_printf("%c",l);//以0x1a来结束,表示内容结束,发送短信   
这个输出回车换行符
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-5-21
在线时间
1 小时
 楼主| 发表于 2014-11-20 21:48:31 | 显示全部楼层
回复【2楼】北京:
---------------------------------
这种方式刚试了一下不行,会把0x也以ASCALL码的形式发送出去
回复

使用道具 举报

8

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2013-11-7
在线时间
23 小时
发表于 2014-11-20 22:34:10 | 显示全部楼层
回复【3楼】落蝶轩:
---------------------------------
你到底发出去是“0x1a”还是“EOF”还是"1A"还是'26',我说的第二种发出去的是什么呢?
回复

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-11-20
在线时间
0 小时
发表于 2014-11-20 22:50:57 | 显示全部楼层
u2_printf("103\0x1A");
内容直接跟0x1A就行了,否则发出的字符串会多一个换行,使用C 字符串转义字符就行了
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-5-21
在线时间
1 小时
 楼主| 发表于 2014-11-20 23:18:15 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
明白了,谢谢。
回复

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-11-20
在线时间
0 小时
发表于 2014-11-20 23:34:15 | 显示全部楼层
u2_printf("103\x1A");
不好意思多写了一个零,在家里手上没硬件,软件仿真了一下,没有问题
回复

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-11-20
在线时间
0 小时
发表于 2014-11-21 09:25:40 | 显示全部楼层

用原子兄的例程 在 Mini 板上试了一下 没问题

while(1)
 {
  if(USART_RX_STA&0x80)
  {       
   len=USART_RX_STA&0x3f;//得到此次接收到的数据长度
   printf("\r\n您发送的消息为:\r\n\x01A");
   for(t=0;t<len;t++)
   {
    USART1->DR=USART_RX_BUF[t];
    while((USART1->SR&0X40)==0);//等待发送结束
   }
   printf("\n\n");//插入换行
   USART_RX_STA=0;
  }else
  {
   times++;
   if(times%5000==0)
   {
    printf("\r\nMiniSTM32开发板 串口实验\r\n\x01A");
    printf("正点原子@ALIENTEK\r\n\r\n\r\n");
   }
   if(times%200==0)printf("请输入数据,以回车键结束\r\n\x01A"); 
   if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
   delay_ms(10);  
  }
 } 


回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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