private void buttonVoltage_Click(object sender, EventArgs e)
{
byte addr=0;
string textstr;
textstr = textBoxAddress.Text;
addr = StringToHex(textstr);
byte[] bytes=new byte[3];
bytes[0]=addr;
bytes[1]=0x60;
bytes[2]=TwoNumXor(bytes[0],bytes[1]);
try
{
SP.Write(bytes, 0, 3);
MessageBox.Show("数据发送成功");
}
catch
{
MessageBox.Show("数据发送失败");
}
}
上面是串口发送数据的代码,下面是串口接收数据的代码:
private void SP_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string lStrRecv = "";
int bytesToRead = SP.BytesToRead;
if (SP.IsOpen )
{
byte[] lAryBytes = new byte[bytesToRead];
int lIntLen = SP.Read(lAryBytes, 0, lAryBytes.Length);
if (lIntLen > 0)
{
byte[] lAryData = new byte[lIntLen];
for (int i = 0; i < lIntLen; i++)
{
lAryData[i] = lAryBytes[i];
}
lStrRecv = System.Text.Encoding.Default.GetString(lAryData);
}
this.textBoxVtest.Invoke(
new MethodInvoker(
delegate
{
this.textBoxVtest.AppendText(lStrRecv.ToUpper());
//this.textBoxVtest += "";
this.textBoxVtest.Text+= lStrRecv;
})); }
}
发送数据后应该就会触发串口接收数据private void SP_DataReceived(object sender, SerialDataReceivedEventArgs e),可是我发送数据后,单步调试都没有跑到private void SP_DataReceived函数里,好像是根本没有触发串口的数据接收。
请高手赐教我怎么才能收到我发的数据呢?谢谢!
{
byte addr=0;
string textstr;
textstr = textBoxAddress.Text;
addr = StringToHex(textstr);
byte[] bytes=new byte[3];
bytes[0]=addr;
bytes[1]=0x60;
bytes[2]=TwoNumXor(bytes[0],bytes[1]);
try
{
SP.Write(bytes, 0, 3);
MessageBox.Show("数据发送成功");
}
catch
{
MessageBox.Show("数据发送失败");
}
}
上面是串口发送数据的代码,下面是串口接收数据的代码:
private void SP_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string lStrRecv = "";
int bytesToRead = SP.BytesToRead;
if (SP.IsOpen )
{
byte[] lAryBytes = new byte[bytesToRead];
int lIntLen = SP.Read(lAryBytes, 0, lAryBytes.Length);
if (lIntLen > 0)
{
byte[] lAryData = new byte[lIntLen];
for (int i = 0; i < lIntLen; i++)
{
lAryData[i] = lAryBytes[i];
}
lStrRecv = System.Text.Encoding.Default.GetString(lAryData);
}
this.textBoxVtest.Invoke(
new MethodInvoker(
delegate
{
this.textBoxVtest.AppendText(lStrRecv.ToUpper());
//this.textBoxVtest += "";
this.textBoxVtest.Text+= lStrRecv;
})); }
}
发送数据后应该就会触发串口接收数据private void SP_DataReceived(object sender, SerialDataReceivedEventArgs e),可是我发送数据后,单步调试都没有跑到private void SP_DataReceived函数里,好像是根本没有触发串口的数据接收。
请高手赐教我怎么才能收到我发的数据呢?谢谢!
try
{
SP.Write(bytes, 0, 3);
MessageBox.Show("数据发送成功");
}
把MessageBox这行注销了也不行。
这是串口的设置:
SP.Close();
SP.PortName = "COM1";
SP.ReadTimeout = -1;
SP.WriteTimeout = -1;
SP.BaudRate = 9600;
//SP.Parity = Parity.None;
// SP.StopBits = StopBits.None;
//SP.ReceivedBytesThreshold = 3;
SP.Open();
串口打开成功了
我应该这样循环监听串口呢?
或者确定事件是否绑定?
直接在serialport控件的接收事件中读串口数据即可
谢谢!
我试着设置下RTSEnabled=true,看好不好用