OpenEdv-开源电子网

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

求救,stm32通过串口把sd卡中的图片发送到gsm模块中

[复制链接]

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-5-5
在线时间
22 小时
发表于 2019-5-6 22:33:47 | 显示全部楼层 |阅读模式
2金钱
我想通过gsm模块发送彩信,电脑上位机测试gsm模块是可以正常发送彩信的,但是用单片机控制时无法正确通过串口发送图片数据,各位大神救命啊!
——————————————————————————————————
如何通过串口发送图片数据(是不是我没有用16进制发送图片?)
————————————————————————————————————

(看第一个函数就好了)
void Send_Bmp(char * filename)//通过串口发送图片
{
unsigned int i,bw;
unsigned char pic[1];
f_open( &fp ,(char*)filename,  FA_OPEN_EXISTING | FA_READ);            //打开图片文件
for(i=0;i<9662;i++)
{
  f_read(&fp,pic, sizeof(unsigned char), &bw);             //读取一个字节
  UART1_SendString((char*)pic);             //通过串口发送一字节数据到gsm模块中   
}
f_close(&fp);
}
通过串口助手知道,串口发送的字节比实际图片小,我设定发送9662字节但是实际上串口接收到的只有7千多字节,不知道是什么问题啊

--------------------------------------------------------------------------------------
void UART1_SendString(char* s)
{
while(*s)//检测字符串结束符
{
  while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
  USART_SendData(USART1 ,*s++);//发送当前字符
}
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
}
-----------------------------------------------------------------------
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_USART_DATA(Data));
   
  /* Transmit Data */
  USARTx->DR = (Data & (uint16_t)0x01FF);
}

最佳答案

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

认真看了一下问题,好像是因为BMP文件中某些字符串被串口函数当作空,没有发送出去,别用库函数里的串口,自己写一个串口,或者修改一下原串口程序
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-5-5
在线时间
22 小时
 楼主| 发表于 2019-5-6 22:33:48 | 显示全部楼层
LUOQIUYANG 发表于 2019-10-21 19:01
你好,我也遇到这个问题,不知道你这个问题解决了没,解决的话给我分享分享

认真看了一下问题,好像是因为BMP文件中某些字符串被串口函数当作空,没有发送出去,别用库函数里的串口,自己写一个串口,或者修改一下原串口程序
回复

使用道具 举报

0

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2019-4-28
在线时间
5 小时
发表于 2019-5-7 13:04:36 | 显示全部楼层
帮忙顶一顶!
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10573
金钱
10573
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-5-7 20:21:22 | 显示全部楼层
帮顶~~
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-10-20
在线时间
3 小时
发表于 2019-10-21 19:01:09 来自手机 | 显示全部楼层
你好,我也遇到这个问题,不知道你这个问题解决了没,解决的话给我分享分享
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-5-5
在线时间
22 小时
 楼主| 发表于 2019-12-8 10:35:49 | 显示全部楼层
LUOQIUYANG 发表于 2019-10-21 19:01
你好,我也遇到这个问题,不知道你这个问题解决了没,解决的话给我分享分享

抱歉现在才看到,当时好像是发送AT指令忘记加延时了,导致GSM模块未就绪就开始接收数据,后面的AT指令全都当作数据处理了,在发送数据前加一个100ms的延时就好了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 01:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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