/// <summary>
/// 發送一條16進制指令到繼電器
/// </summary>
private void SendDataToJiDianQi(string strSend)
{
try
{
string[] strArray = strSend.Split(' '); //01 02 00 00 00 09 B8 0C
byte[] byteBuffer = new byte[strArray.Length];
int count = 0;
for (int i = 0; i < strArray.Length; i++) //对获取的字符做相加运算
{
byte[] bytesOfStr = Encoding.Default.GetBytes(strArray[i]);
int decNum = Convert.ToInt32(strArray[i], 16);
byteBuffer[count] = Convert.ToByte(decNum);
count++;
}
if (_spJiDianQi.IsOpen)
{
_spJiDianQi.DiscardInBuffer();
_spJiDianQi.DiscardOutBuffer();//当你的程序在窗口发送一帧数据(所谓一帧是指由多个字节组成的有逻辑意义的数据)过程中检测到串口发送错误,如果让串口继续发生就没有意义了,这个时候可以用SerialPort.DiscardOutBuffer方法来清除已经进入发送缓冲区的错误数据;
_spJiDianQi.Write(byteBuffer, 0, byteBuffer.Length);
}
else
{
WriteLog("繼電器串口打開失敗!");
}
}
catch (Exception ex)
{
WriteLog("發送指令給繼電器異常:" + ex.Message);
if (_spJiDianQi.IsOpen)
{
_spJiDianQi.DiscardOutBuffer();
}
}
}
/// <summary>
/// 接收繼電器串口數據的方法
/// </summary>
private string ReceiveDataFromJiDianQi()
{
string value = "";
try
{
if (_spJiDianQi.IsOpen)
{
Thread.Sleep(50); //為了接收數據的完整性
int byteNum = _spJiDianQi.BytesToRead;
if (byteNum > 0)
{
byte[] receivedData = new byte[byteNum]; //创建接收字节数组
if (receivedData.Length > 0)
{
_spJiDianQi.Read(receivedData, 0, receivedData.Length); //读取数据
for (int i = 0; i < receivedData.Length; i++)
{
value += receivedData[i].ToString("X2"); //16进制显示
}
//_spJiDianQi.DiscardInBuffer();//当你的程序在接收一帧数据时发生错误,如果再让串口继续接收也没有意义了,这个时候可以用SerialPort.DiscardInBuffer方法来清除已经进入接收缓冲区的错误数据了
}
else
{
WriteLog("讀取繼電器串口數據時,沒有數據返回。");
}
}
}
else
{
WriteLog("繼電器串口打開失敗!");
}
}
catch (Exception ex)
{
WriteLog("讀取繼電器串口數據方法異常:" + ex.Message);
//if (_spJiDianQi.IsOpen)
//{
// _spJiDianQi.DiscardInBuffer();
//}
}
return value;
}
C#串口接收有时候会捕捉到“函数不正确”错误
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- hanshierlou 2017-04-21 01:58关注
这个ReceiveDataFromJiDianQi()方法有时候会偶尔try catch捕捉到“函数不正确”
解决 无用评论 打赏 举报
悬赏问题
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥85 maple软件,solve求反函数,出现rootof怎么办?
- ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥15 maple软件,用solve求反函数出现rootof,怎么办?
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿
- ¥100 关于使用MATLAB中copularnd函数的问题