VC++串口通信中怎么将串口收到的数据保存到文件中
我做毕业设计,题目是用PDA抄表系统的软件设计,我要做的是把串口通信收到的实时数据保存起来,怎么保存最简单呢?用数据库还是直接保存为TXT文件,怎么保存,具体实现,我很菜...
我做毕业设计,题目是用PDA抄表系统的软件设计,我要做的是把串口通信收到的实时数据保存起来,怎么保存最简单呢?用数据库还是直接保存为TXT文件,怎么保存,具体实现,我很菜,刚学VC++,望高手指点。回答的满意的还会追加分数。
展开
6个回答
展开全部
1、创建文件会出现文件被访问,以至于无法删除以及编辑。建议用上using。
using (File.Create(@"D:\TestDir\TestFile.txt"));
2、写入文件
//WriteAllLines
File.WriteAllLines(filePath,new string[]{"11111","22222","3333"});
//WriteAllText
File.WriteAllText(filePath, "11111\r\n22222\r\n3333\r\n");
//StreamWriter
using (StreamWriter sw = new StreamWriter(filePath))
{
sw.Write("11111\r\n22222\r\n3333\r\n");
sw.Flush();
}
File.WriteAllBytes(filePath, buff[]); 写入字符数组
具体使用哪个方法,根据你的具体写入内容确定
using (File.Create(@"D:\TestDir\TestFile.txt"));
2、写入文件
//WriteAllLines
File.WriteAllLines(filePath,new string[]{"11111","22222","3333"});
//WriteAllText
File.WriteAllText(filePath, "11111\r\n22222\r\n3333\r\n");
//StreamWriter
using (StreamWriter sw = new StreamWriter(filePath))
{
sw.Write("11111\r\n22222\r\n3333\r\n");
sw.Flush();
}
File.WriteAllBytes(filePath, buff[]); 写入字符数组
具体使用哪个方法,根据你的具体写入内容确定
展开全部
使用一个子线程,使用一个队列,一边进另一边出,打开文件后写到文件里面就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不就是文件操作么?你收到一包数据什么的直接写入文件啊,用CStdioFile比较简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问你同事、同学。既然菜就别怕别人笑话
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在OnComm事件中作如下处理:
LONG CSCRDlg::OnCommunicate(WPARAM ch, LPARAM port)
{
if(port==1) //COM1接收到数据
{
RXData[chnum] = ch;//RXData[] 全局char变量
chnum++; //接收到的字符个数
if(chnum==41) //接收到n个后进行保存处理
{
CFile file;
CFileException e;
int error=0;
if(!file.Open(defaultpath,CFile::modeCreate|CFile::typeBinary|CFile::modeWrite,&e))
MessageBox("保存文件时出错,不能保存数据","BJ2948A",MB_ICONERROR);
else
{
TRY
{
file.Write(&RXData,sizeof(N));
}
CATCH(CFileException,e)
{
if(e->m_cause!=CFileException::none)
{
error=1;
MessageBox("保存文件时出错","BJ2948A警告",MB_ICONERROR);
}
}
END_CATCH
if(error==0)
MessageBox("文件已保存!","BJ2948A提示",MB_ICONINFORMATION);
}
file.Close();
}
}
}
建议你看一下,龚建伟编的那本串口的书,他是编串口调试助手的那人,有很多例子不错。
还有,vckbase上的代码库里也有很多关于串口的例子,建议你看看!
LONG CSCRDlg::OnCommunicate(WPARAM ch, LPARAM port)
{
if(port==1) //COM1接收到数据
{
RXData[chnum] = ch;//RXData[] 全局char变量
chnum++; //接收到的字符个数
if(chnum==41) //接收到n个后进行保存处理
{
CFile file;
CFileException e;
int error=0;
if(!file.Open(defaultpath,CFile::modeCreate|CFile::typeBinary|CFile::modeWrite,&e))
MessageBox("保存文件时出错,不能保存数据","BJ2948A",MB_ICONERROR);
else
{
TRY
{
file.Write(&RXData,sizeof(N));
}
CATCH(CFileException,e)
{
if(e->m_cause!=CFileException::none)
{
error=1;
MessageBox("保存文件时出错","BJ2948A警告",MB_ICONERROR);
}
}
END_CATCH
if(error==0)
MessageBox("文件已保存!","BJ2948A提示",MB_ICONINFORMATION);
}
file.Close();
}
}
}
建议你看一下,龚建伟编的那本串口的书,他是编串口调试助手的那人,有很多例子不错。
还有,vckbase上的代码库里也有很多关于串口的例子,建议你看看!
参考资料: www.vckbase.com
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询