线程和串口通信问题

wl0326 2012-05-30 09:38:24
各位高手,小弟有两个问题,一个是线程调用问题,一个是串口通信问题,
private void button2_Click(object sender, EventArgs e)
{
if (!CheckPortSetting())
{
MessageBox.Show("串口未设置!", "错误提示");
return;
}
if (!CheckSendData())
{
MessageBox.Show("请输入要发送的数据!", "错误提示");
return;
}
if (!isSetProperty)
{
SetPortProperty();
isSetProperty = true;
}
if (isOpen)
{//写串口数据
try
{
int n = 0;

if (checkBoxHexSend.Checked)
{ MatchCollection mc = Regex.Matches(tbxSendData.Text, @"(?i)[a-f\d]{2}");
List<byte> buf = new List<byte>();//填充到这个临时列表中
//依次添加到列表中
foreach (Match m in mc)
{
buf.Add(byte.Parse(m.Value, System.Globalization.NumberStyles.HexNumber));
}
}
else//ascii编码直接发送
{
} }
_keepReading = true;
_readThread = new Thread(new ThreadStart(SetAddFile));
_readThread.Start();

}
catch (Exception)
{
return;
}

}
else
{
MessageBox.Show("串口未打开!", "错误提示");
return;
}



}
public delegate void AddFile();
public void SetAddFile()
{
this.Invoke(new AddFile(this.ReadPort));
}
private void ReadPort()
{
}
这是线程调用问题,我发现当用托管方式调用时,就是上述方法,就可以了,而当不用托管,而直接 _readThread = new Thread(new ThreadStart(ReadPort));
_readThread.Start();这种时,却无法调用到ReadPort函数,小弟百思不得其解,请各位赐教,还有一个问题是这样的,
private void JYT_Start_Click(object sender, EventArgs e)
{
fs_sjzhen[0] = 0x7E;
fs_sjzhen[1] = 0x02;
fs_sjzhen[2] = 0x03;
fs_sjzhen[3] = 0x04;
fs_sjzhen[4] = 0x05;
fs_sjzhen[5] = 0x06;
fs_sjzhen[6] = 0x07;
for (int i = 0; i < 7; i++)
{
fs_sjzhen[7] ^= fs_sjzhen[i];
}
List<byte> buf = new List<byte>();//填充到这个临时列表中
//依次添加到列表中
foreach (byte b in fs_sjzhen)
{
try
{
buf.Add(byte.Parse(b.ToString("X2"), System.Globalization.NumberStyles.HexNumber));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//mc = null;
}
for (int i = 0; i < 8; i++)
{
fs_sjzhen[i] = 0;
}
但我第一次发送数据时,是正常发送,但当我第二次发送时,却必须将数组清零才可以,for (int i = 0; i < 8; i++)
{
fs_sjzhen[i] = 0;
}
就是这句,但是按理说第二次发送,原来的数据会被覆盖,用不到这句吧,但不知为什么,一定要加上这句,否则就不对,有劳各位费心赐教,小弟在此多多谢过。
...全文
68 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

111,126

社区成员

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

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

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