读书人

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

发布时间: 2012-02-08 19:52:21 作者: rapoo

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

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函数本身没什么问题
你先测试下单串口接收字符是否也是同样问题
另外,最好把相应的接收字符,和乱码拿几个出来看下!

读书人网 >C语言

热点推荐