private void btnReceive_Click(object sender, EventArgs e)
{
if(IsOpen )
{
try
{
txtReceive.Text += sp.ReadLine();
}
catch(Exception)
{
lblStatus.Text = "读取串口时发僧错误!";
return;
} }
else
{
MessageBox.Show("串口未打开!","错误提示");
return;
}
}
IsOpen是串口打开标志位,调试程序时用单步跟踪,串口检测,发数据都很正常,点击“接收”按钮后出现异常,要么显示串口未打开,要么接受框中为空,现在调试时执行完txtReceive.Text += sp.ReadLine();后就弹出Form,但是上面的字体看不清楚,不知道是怎么回事?有没有高手解答一下,串口程序已经困扰我好久了,我是新手,望高手多多提携!
C#
{
if(IsOpen )
{
try
{
txtReceive.Text += sp.ReadLine();
}
catch(Exception)
{
lblStatus.Text = "读取串口时发僧错误!";
return;
} }
else
{
MessageBox.Show("串口未打开!","错误提示");
return;
}
}
IsOpen是串口打开标志位,调试程序时用单步跟踪,串口检测,发数据都很正常,点击“接收”按钮后出现异常,要么显示串口未打开,要么接受框中为空,现在调试时执行完txtReceive.Text += sp.ReadLine();后就弹出Form,但是上面的字体看不清楚,不知道是怎么回事?有没有高手解答一下,串口程序已经困扰我好久了,我是新手,望高手多多提携!
C#
这个方法没用过,我知道的是,串口里有个委托,当串口接收到数据里,就会触发这个委托,我都是一个从这个委托中取数据的,没发现过问题
你可以这样试一试
byes[] s = new byes[16];
sp.read(s,0,s.length);
最后把s转换成String型就可以了!
我以前也遇到过这样的问题。
如果下位机发送的数据是已经进行编码的,可以 用txtReceive.Text += sp.ReadExisting();
还有就是可以通过读取字节的方式读取下位机的方式
int len=sp.BytesToRead;
byte[]buffer=new byte[len];
sp.Read(buffer,0,len);
txtReceive.Text+=BitConverter.ToString(buffer);