最近在学习上位机 通讯协议基本了解了 所以动手操作了一下
但是实际操做的时候问题又来了
那就是对接收数据的处理
因为我收发的都是16进制的数据
发送的话我会写 接受的话涉及到对数据的一个提取 (接受的数据都是完整的一条 需要对数据提取来选择需要的)
之后想了一下 然后网上查了一下 自己写了一个出来 求大佬们批评指正 (随便评分给一波[C#] 纯文本查看 复制代码 public partial class Form1 : Form {
public Form1()
{
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)[mw_shl_code=csharp,true] public string StringTo16(string inSting, Enum16Hex enum16)
{
string outString = "";
byte[] bytes = Encoding.Default.GetBytes(inSting);
for (int i = 0; i < bytes.Length; i++)
{
int strInt = Convert.ToInt16(bytes[i] - '\0');
string s = strInt.ToString("X");
if (s.Length == 1)
{
s = "0" + s;
}
s = s + AddSplitString(enum16);
outString += s;
}
return outString;
}
{
int count = serialPort1.BytesToRead;
if (count >= 19)
{
byte[] buffrr = new byte[count];
serialPort1.Read(buffrr, 0, count);
label3.Text = Convert.ToString((buffrr[10] + buffrr[11] * 256));
label5.Text = Convert.ToString((buffrr[12] + buffrr[13] * 256));
label5.Text = Convert.ToString((buffrr[14] + buffrr[15] * 256));[/mw_shl_code])
网上的16进制转换代码如下
|