【C#上位机(简单实现串口发送)】

1.窗体函数

private void Form1CommSend_Load(object sender, EventArgs e)
{
	//对数据下拉框进行初始化
	string str;
	for (int i = 0; i < 256; i++)
	{
		//ToString("x")将数字转化为16进制
		//ToUpper()将字符串所有字符大写
		//ToLower()将字符串所有字符小写  ---str = i.ToString("x").ToLower;
		//str存储的是i转换为16进制格式后,大写的字符串
		str = i.ToString("x").ToUpper();
		if (str.Length == 1)
		{
			//如果是0xA等一位时,其在数据前加一个字符"0"
			str = "0" + str;
		}
		//十六进制显示统一添加"0x"
		comboBox1Data.Items.Add("0x" + str);
		//上述代码还可写成:comboBox1Data.Items.Add("0x" + ((str.Length == 1) ?  "0" + str : str));
	}
	//初始化下拉框为0x00
	comboBox1Data.Text = "0x00";
}

2.按钮函数

private void button1Send_Click(object sender, EventArgs e)
{
	//存储下拉框的数据内容给data
	string data = comboBox1Data.Text;
	//把字符分开,只获取内容,不需要0x,即从第2位开始,长度2
	string converdata = data.Substring(2,2);
	//数据一个字节就ok
	byte[] buffer = new byte[1];
	//将字符串转换为byte型变量,byte === unsigned char(8位无符号整数)
	buffer[0] = Convert.ToByte(converdata,16);
	//防止出错
	try 
	{
		//打开串口
		serialPort1.Open();
		// Write(): 使用缓冲区的数据将指定数量的字节写入串行端口。
		// buffer: 包含要写入端口的数据的字节数组。
		// offset: buffer 参数中从零开始的字节偏移量,从此处开始将字节复制到端口
		// count: 要写入的字节数。
		serialPort1.Write(buffer, 0, 1);
		//关闭串口
		serialPort1.Close();
	}
	//出错执行此块代码
	catch
	{
		if (serialPort1.IsOpen)
		{
			//如果写数据错误,串口此时状态为打开,就应关闭串口,否则串口不能重复打开和关闭,防止下次不能使用。
			serialPort1.Close();  
		}
		MessageBox.Show("端口错误", "错误");
	}

}

3.运行结果
【C#上位机(简单实现串口发送)】_第1张图片

往期链接:
1.C#上位机(定时器计数).
2.c# 上位机(VS2013新建一个例程).

你可能感兴趣的:(C#上位机,c#,开发语言)