串口程序实时接收的数据如何保存到txt文件中?

zuyu0631 2019-04-24 04:04:10
用C#编写了串口程序,接收到的数据源源不断显示在textbox中,且textbox中数据位数超出一定值后会删除掉之前的数据。我想将串口接收到的数据完整的保存到text文件中,该如何编写呢?
以下是我关于数据接收的代码:
void sp_DataReceived(object sender,SerialDataReceivedEventArgs e)
{

this.Invoke((EventHandler)(delegate
{
if (isHex == false)
{while (sp.BytesToRead > 0)
{
tbxRecvData.Text += (char)sp.ReadChar();// sp.ReadLine();
}
}
else
{
Byte[] ReceivedData = new Byte[sp.BytesToRead];
sp.Read(ReceivedData, 0, ReceivedData.Length);
String RecvDataText = null;
for(int i = 0; i < ReceivedData.Length - 1; i++)
{
RecvDataText += ("0x" + ReceivedData[i].ToString("X2") + "");
}
tbxRecvData.Text += RecvDataText;
}
int k = 0;
k = tbxRecvData.Text.Length;
if(k>3500)
tbxRecvData.Text = tbxRecvData.Text.Substring( k-2000);
}));
}
...全文
1245 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
FileStream fs = new FileStream(System.Web.HttpContext.Current.Server.MapPath("123.txt"), FileMode.Append); StreamWriter sw = new StreamWriter(fs); sw.BaseStream.Seek(0, SeekOrigin.End); sw.WriteLine("内容"); sw.Close(); fs.Close(); 不断追加内容
Fan警长 2019-04-24
  • 打赏
  • 举报
回复
输入框使用System.Windows.Forms.RichTextBox控件 private SerialPort sp = null; private SerialDataReceivedEventHandler sp_DataReceivedHandler = null; private void btnStart_Click(object sender, EventArgs e) { try { sp = new SerialPort(); sp.PortName = "xxx"; //端口号 sp.BaudRate = 9600; //波特率 sp.StopBits = "None"; //停止位 sp.DataBits = 8; //数据位 sp.Parity = "None";// 校验位 sp_DataReceivedHandler = new SerialDataReceivedEventHandler(sp_DataReceived); sp.DataReceived += sp_DataReceivedHandler; if (!sp.IsOpen) { sp.Open(); } this.txtResult.AppendText(DateTime.Now.ToString("HH:mm:ss") + "xxx"已打开。\r\n"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } /// <summary> /// 循环读数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { Thread.Sleep(20); byte[] data = new byte[sp.BytesToRead]; int count = sp.Read(data, 0, data.Length); if (0 == count) { return; } this.setData(data); sp.DiscardInBuffer(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void setData(byte[] data) { Control.CheckForIllegalCrossThreadCalls = false; this.txtResult.AppendText(DateTime.Now.ToString("HH:mm:ss") + " 接收数据:" + ByteToString(data) + "\r\n"); }
OrdinaryCoder 2019-04-24
  • 打赏
  • 举报
回复
https://www.cnblogs.com/akwwl/p/3240813.html

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧