概述
TCP和串口间的互相通信(透传)
Tcp作为服务端,接收消息,通过串口发送
private void TcpDataReceive(object clientmsg)
{
string tcpReceiveFormat = "Hex";
Dispatcher.Invoke(new Action(() =>
{
if (TcpSendFormat.IsChecked == true)
{
tcpReceiveFormat = "ASCII";
}
}));
Byte[] bytes = new Byte[1024];
int i;
NetworkStream stream = clientmsg as NetworkStream;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
string msg = "";
byte[] buffer = new byte[i];
buffer = bytes.Take(i).ToArray();
msg += $"[{DateTime.Now.ToString("HH:mm:ss.fff")} ###Rece] ";
if (tcpReceiveFormat.Equals("Hex"))
{
string tempss = "";
foreach (byte b in buffer)
{
msg += $"{b.ToString("X2")} ";
tempss += b.ToString("X2");
}
messageModel.TcpReceNewestMsg = tempss;
}
else if (tcpReceiveFormat.Equals("ASCII"))
{
msg += $"{Encoding.ASCII.GetString(buffer)} ";
messageModel.TcpReceNewestMsg = Encoding.ASCII.GetString(buffer);
}
msg += "rn";
messageModel.TcpReceiveMessage += msg;
}
}
private void SerialDataReceive(object sender, SerialDataReceivedEventArgs e)
{
string receiveFormat = "Hex";
Dispatcher.Invoke(new Action(() =>
{
if (SerialSendFormat.IsChecked == true)
{
receiveFormat = "ASCII";
}
}));
int num = serialPort.BytesToRead;
byte[] buffer = new byte[num];
receiveCount += num;
serialPort.Read(buffer, 0, num);
string msg = "";
msg += $"[{DateTime.Now.ToString("HH:mm:ss.fff")} ###Rece] ";
if (receiveFormat.Equals("Hex"))
{
string temps = "";
foreach (byte b in buffer)
{
msg += $"{b.ToString("X2")} ";
temps += b.ToString("X2");
}
messageModel.SerialReceNewestMsg = temps;
}
else if (receiveFormat.Equals("ASCII"))
{
msg += $"{Encoding.ASCII.GetString(buffer)} ";
messageModel.SerialReceNewestMsg = Encoding.ASCII.GetString(buffer);
}
msg += "rn";
messageModel.SerialReceiveMessage += msg;
}
源码资源:https://download.csdn.net/download/qq_40397362/85088218``
最后
以上就是昏睡小天鹅为你收集整理的TCP和串口间的互相通信(透传)的全部内容,希望文章能够帮你解决TCP和串口间的互相通信(透传)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复