我C语言模拟我的操作模式发现
#include <stdio.h>
#include <string.h>
void substr(char *dest, const char* src, unsigned int start, unsigned int cnt)
{
strncpy(dest,src+start,cnt);
dest[cnt] = 0;
}
int main(int argc, char *argv[])
{
char *p;
char TTY_BUFF[64]={'+','C','S','Q',':','\x20','2','8',',','0'};
char t[2];
substr(t,TTY_BUFF,6,2);
printf("%d",atoi(t));
getch();
return 0;
}
是可以输出28的
但是我用在STM32板子上面
CSQ数组定义为 char Mod_CSQ[2]={31,0};
相关函数为
void substr(char *dest, const char* src, unsigned int start, unsigned int cnt)
{
strncpy(dest,src+start,cnt);
dest[cnt] = 0;
}
void Get_CSQ(char *pCSQ)
{
char tmp[2];
printf("ATE0\r\n");
while(0==URT_STA);
USART_RX_STA=0;
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
printf("AT+CSQ\r\n");
/* 等待GPRS模块反馈数据 */
while(0==URT_STA)
{
TTY_BUFF[USART_RX_STA&0X3F]=USART_RX_BUF[USART_RX_STA&0X3F]; //边等待边把接收BUFF内容转移到TTY_BUFF里面
}
/* 初始化串口接收中断标志 */
USART_RX_STA=0;
Delay_Ms(2000);
substr(tmp,(char *)TTY_BUFF,6,2);
pCSQ[0]=atoi(tmp);
pCSQ[1]=0;
}
pCSQ[0]最后这里面居然是0
怎么回事呢?求解决 谢谢
|