串口通讯死机的问题
各位大侠,我在和下位机进行通信的过程中遇到这样一个问题,就是数据在发送到的过程中会突然不在发送,程序好像死了一样不在执行,下面是我的程序
fslist.Clear();
fslist.Add(0x7E);
fslist.Add(0x45);
fslist.Add(0x16);
byte d1 = (byte)(zdfs_count / 256);
byte d2 = (byte)(zdfs_count % 256);
fslist.Add(d1);
fslist.Add(d2);
int[] num = new int[10];
double[] num1 = new double[10];
for (int i = 0; i < 10; i++)
{
num[i] = Convert.ToInt32(Math.Round(Chattering_Value[zdfs_count * 10 + i] +0.1)* 5.12);
}
for (int i = 0; i < 10; i++)
{
byte d3 = (byte)(num[i] / 256);//定义数据的高八位
byte d4 = (byte)(num[i] % 256);//定义数据的低八位
fslist.Add(d4);
fslist.Add(d3);
}
jy_shuju = 0;
for (int i = 0; i < fslist.Count; i++)
{
jy_shuju ^= (byte)fslist[i];
}
fslist.Add(jy_shuju);
List<byte> buf = new List<byte>();//填充到这个临时列表中
byte b;
//依次添加到列表中
try
{
for (int i = 0; i < fslist.Count; i++)
{
b = (byte)fslist[i];
try
{
buf.Add(byte.Parse(b.ToString("X2"), System.Globalization.NumberStyles.HexNumber));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (comm.IsOpen != true)
{
Init();
}
try
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
t8.Start();
comm.Write(buf.ToArray(), 0, buf.Count);
}
builder.Clear();
byte b1;
for (int i = 0; i < buf.Count; i++)
{
b1 = (byte)buf[i];
try
{
builder.Append(b1.ToString("X2") + " ");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
string str = builder.ToString();
byte[] byteText = System.Text.Encoding.Default.GetBytes(str);
//this.richTextBox1.Clear();
this.richTextBox1.AppendText(str + "\r\n");
builder.Clear();
buf.Clear();
就是程序在执行 comm.Write(buf.ToArray(), 0, buf.Count);之后会突然死掉,不再发送数据,我明明在这之前启动了t8定时器,就是每隔三秒若没有回复会重新发送数据,但发现程序死后这条也不执行了,而文本框中已显示执行了comm.Write(buf.ToArray()这一条语句的内容,然后就死掉了 ,请各位高手指点一下为什么会这样,小弟是初学者,甚是找不到北,望各位牛人能给予菜鸟一些详细指点,在此感激不尽了。
fslist.Clear();
fslist.Add(0x7E);
fslist.Add(0x45);
fslist.Add(0x16);
byte d1 = (byte)(zdfs_count / 256);
byte d2 = (byte)(zdfs_count % 256);
fslist.Add(d1);
fslist.Add(d2);
int[] num = new int[10];
double[] num1 = new double[10];
for (int i = 0; i < 10; i++)
{
num[i] = Convert.ToInt32(Math.Round(Chattering_Value[zdfs_count * 10 + i] +0.1)* 5.12);
}
for (int i = 0; i < 10; i++)
{
byte d3 = (byte)(num[i] / 256);//定义数据的高八位
byte d4 = (byte)(num[i] % 256);//定义数据的低八位
fslist.Add(d4);
fslist.Add(d3);
}
jy_shuju = 0;
for (int i = 0; i < fslist.Count; i++)
{
jy_shuju ^= (byte)fslist[i];
}
fslist.Add(jy_shuju);
List<byte> buf = new List<byte>();//填充到这个临时列表中
byte b;
//依次添加到列表中
try
{
for (int i = 0; i < fslist.Count; i++)
{
b = (byte)fslist[i];
try
{
buf.Add(byte.Parse(b.ToString("X2"), System.Globalization.NumberStyles.HexNumber));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (comm.IsOpen != true)
{
Init();
}
try
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
t8.Start();
comm.Write(buf.ToArray(), 0, buf.Count);
}
builder.Clear();
byte b1;
for (int i = 0; i < buf.Count; i++)
{
b1 = (byte)buf[i];
try
{
builder.Append(b1.ToString("X2") + " ");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
string str = builder.ToString();
byte[] byteText = System.Text.Encoding.Default.GetBytes(str);
//this.richTextBox1.Clear();
this.richTextBox1.AppendText(str + "\r\n");
builder.Clear();
buf.Clear();
就是程序在执行 comm.Write(buf.ToArray(), 0, buf.Count);之后会突然死掉,不再发送数据,我明明在这之前启动了t8定时器,就是每隔三秒若没有回复会重新发送数据,但发现程序死后这条也不执行了,而文本框中已显示执行了comm.Write(buf.ToArray()这一条语句的内容,然后就死掉了 ,请各位高手指点一下为什么会这样,小弟是初学者,甚是找不到北,望各位牛人能给予菜鸟一些详细指点,在此感激不尽了。
...全文
相关推荐
串口导致单片机死机的原因
本文主要讲了串口导致单片机死机的原因有哪些,下面一起来学习下
c# 基于PC 串口通讯- 与下位机通讯死机bug修复
简单的串口通讯 采用定时器扫描接收数据 与下位机通讯不死机
sscom5.13.1串口调试工具.zip
SSCOM32串口调试工具最新版, SSCOM32是一款很好的串口调试工具(串口模拟器,串口虚拟器,串口调试助手),其操作简单、易学易用,深受广大电子工程师的喜爱。此软件本身的稳定性可靠性好,单个文件,新版解决了USB串口误拔后死机问题,且回插后能自动恢复,可以保存Log文件到电脑. 通讯接口除了串口外,增加了网络TCP/IP,UDP通讯 波特率自定义支持到50MBPS 支持数据包加时间戳显示方式 支持预定义99组数据串发送,且可设置顺序和单独的延时 支持发送数据包加校验 字符串发送模式支持转义符号输入 支持接收数据实时保存
串口通讯工具
字符和其对应的ASCII码同时显示,有专门的存储指令窗口。
安防与监控中的解析停车场系统的十大常见故障
导读:停车场系统越来越广泛应用于全国各地大大小小的停车场中,停车场系统的应用给人们带来方便的同时,在日常的管理中也经常会出现一些问题,那么我们如何排除停车场系统的常见故。 常见故障一:停车场软件故障 1、软件一进入出入管理便死机 (1)重新启动电脑 (2)视频卡和别的卡冲突,换插槽 (3)更改中断号 2、软件无法进入出入管理 (1)检查读卡机是否开机即通讯正常 (2)网络正常 (3)电脑显卡设置正常 (4)系统设置是否正常 3、软件在刷卡时反应慢或电脑死机 (1)检查操作系统是否正常(重装系统) (2)车辆库数据不能


