首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

多串口收数及存文件解决方案

2012-02-08 
多串口收数及存文件收到多串口数据存文件时,怎么总是乱码?我的大概程序是这样的,麻烦各位帮忙看下,多串口

多串口收数及存文件
收到多串口数据存文件时,怎么总是乱码?我的大概程序是这样的,麻烦各位帮忙看下,多串口收的是字符串。 波特率对的,直接在屏幕上显示没错,加上存文件函数就乱码,不知哪里出错了。 

void save(char un)  
  {  
  FILE *fp;  

   
  if((fp=fopen("c:\\a.txt","a+"))==NULL)  
  {  
  printf("cannot open file\n");  
  return;  
  }  
   
  fprintf(fp,"%c",un);  

  fclose(fp);  
   
  }  


main()  
{  
......  
......  
......  
port=COM1; // speed=4800;  
parity=LCR_NO_PARITY;  
bits=8;  
stopbits=1;  


if(!gsCOM1.InitSerialPort(port,speed,parity,bits,stopbits))  
{  
comport1.PortBase=PortBaseAddr[port-1];  
gsCOM1.SetVects(ComIntServ_comport1);  
gsCOM1.CommOn();  
}  
else  
SError=2;  


port=COM2;  
speed=19200;  
parity=LCR_NO_PARITY;  
bits=8;  
stopbits=1;  
if(!gsCOM2.InitSerialPort(port,speed,parity,bits,stopbits))  
{  
comport2.PortBase=PortBaseAddr[port-1];  
gsCOM2.SetVects(ComIntServ_comport2);  
gsCOM2.CommOn();  
}  
else  
SError=2;  


do{  
if (kbhit())  
{  
c=getch();  
switch(c)  
{  
case ESC:  
done=TRUE;  
break;  
}  
}  
c=ReadChar_comport1();  

if (c!=-1)  
{  
fprintf(stdout,"%c",c);  
  save(c);  
  }  

c=ReadChar_comport2();  
if (c!=-1)  
{  
fprintf(stdout,"%c",c);  
  save(c);  
}  

}while (!done);  
gsCOM1.CloseSerialPort();  
gsCOM2.CloseSerialPort();  
}





[解决办法]
save函数本身没什么问题
你先测试下单串口接收字符是否也是同样问题
另外,最好把相应的接收字符,和乱码拿几个出来看下!

热点排行