C#编写简易的上位机

标题C#编写简易的上位机

在这里插入图片描述
代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace chuankou1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){for (int i = 1; i < 20; i++){comboBox1.Items.Add("COM" + i.ToString());}comboBox1.Text = "COM1";//串口号默认值comboBox2.Text = "4800";//波特率默认值//很重要serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);//必须手动添加}private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//串口数据接收事件{if (!radioButton3.Checked)//如果接收模式为字符模式{string str = serialPort1.ReadExisting();//字符串方式读textBox2.AppendText(str);//添加内容}else//如果接收模式为数值模式{byte data;data = (byte)serialPort1.ReadByte();//此处需要强制类型转换,将int类型数据转换为bytestring str = Convert.ToString(data, 16).ToUpper();//转换为大写十六进制字符串textBox2.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");//空位补"0"}}private void button1_Click(object sender, EventArgs e){try{serialPort1.PortName = comboBox1.Text;serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);//十进制数据转换serialPort1.Open();button1.Enabled = false;//打开串口按钮不可用button2.Enabled = true;//关闭串口}catch {MessageBox.Show("端口错误,请检查串口", "错误");}}private void button2_Click(object sender, EventArgs e){try{serialPort1.Close();//关闭串口button1.Enabled = true;//打开串口按钮可用button2.Enabled = false;//关闭串口按钮不可用}catch (Exception err){throw;}}private void button3_Click(object sender, EventArgs e){byte[] Data = new byte[1];//只存储一个字节if (serialPort1.IsOpen)//判断串口是否打开,如果打开就执行下一步操作{if (textBox2.Text!=" "){if (!radioButton1.Checked)//如果是字符模式{try{serialPort1.WriteLine(textBox2.Text);//写数据}catch (Exception err){MessageBox.Show("窗口数据写入错误", "错误");//出错提示serialPort1.Close();button1.Enabled = true;//打开串口按钮可用button2.Enabled = false;//关闭串口按钮不可用}}else{for (int i = 0; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++){Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);serialPort1.Write(Data, 0, 1);//循环发送(如果输入字符为0A0BB,则只发送0A,0B)}if (textBox2.Text.Length % 2 != 0)//剩下一位单独处理{//Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - textBox2.Text.Length % 2, textBox2.Text.Length % 2), 16);Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - 1,1), 16);serialPort1.Write(Data, 0, 1);//发送}}}}}//private void textBox1_TextChanged(object sender, EventArgs e)//{//    textBox1.ScrollToCaret();//将滚动条调至最下//}}
}

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace chuankuo2
{public partial class Form1 : Form{//定义一些常量const byte DeviceOpen1 = 0x01;const byte DeviceClose1 = 0x81;const byte DeviceOpen2 = 0x02;const byte DeviceClose2 = 0x82;const byte DeviceOpen3 = 0x03;const byte DeviceClose3 = 0x83;byte[] SerialPortDataBuffer = new byte[1];public Form1(){           InitializeComponent();//窗口构造}private void button1_Click(object sender, EventArgs e){if (serialPort1.IsOpen)//如果串口是打开{try{serialPort1.Close();//关闭串口}catch {                 }button1.Text = "打开串口";//显示打开串口}else//如果串口关闭{try{serialPort1.PortName = comboBox1.Text;//端口号serialPort1.Open();//打开端口button1.Text = "关闭串口";}catch {MessageBox.Show("串口打开失败", "错误");}}}private void Form1_Load(object sender, EventArgs e)//点击屏幕空白处{SearchAndAddSerialToComboBox(serialPort1, comboBox1);//调用扫描函数}private void SearchAndAddSerialToComboBox(SerialPort MyPort,ComboBox MyBox)//定义扫描函数{                                           //将可用端口号添加到ComboBox//string[] MyString = new string[20];//定义20个string类型的数组string Buffer; //缓存MyBox.Items.Clear();//清空ComboBox内容//int count = 0;for (int i = 1; i < 20; i++)//循环{try{Buffer = "COM" + i.ToString();MyPort.PortName = Buffer;MyPort.Open();//MyString[i - 1] = Buffer;//MyString[count] = Buffer;MyBox.Items.Add(Buffer);MyPort.Close();//count++;}catch {//count--;}}//MyBox.Text = MyString[0];//初始化}private void WriteByteToSerialPort(byte data)//单字节写入串口{byte[] Buffer = new byte[2] { 0x00, data };//定义数组if (serialPort1.IsOpen){try{serialPort1.Write(Buffer, 0, 2);//写数据}catch {MessageBox.Show("串口数据发送出错,请检查", "错误");}}}private void button3_Click(object sender, EventArgs e){WriteByteToSerialPort(DeviceOpen1);}private void button4_Click(object sender, EventArgs e){WriteByteToSerialPort(DeviceClose1);}private void button5_Click(object sender, EventArgs e){WriteByteToSerialPort(DeviceOpen2);}private void button6_Click(object sender, EventArgs e){WriteByteToSerialPort(DeviceClose2);}private void button7_Click(object sender, EventArgs e){WriteByteToSerialPort(DeviceOpen3);}private void button8_Click(object sender, EventArgs e){WriteByteToSerialPort(DeviceClose3);}private void button2_Click(object sender, EventArgs e){SearchAndAddSerialToComboBox(serialPort1, comboBox1);//扫描功能的实现}}
}

欢迎关注我!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB拉格朗日插值

%程序:lagrange.m %功能:拉格朗日插值算法&#xff08;MATLAB R2009a&#xff09; %说明:x自变量取值向量 % y对应x的函数取值 % xh可以是一个向量&#xff0c;计算xh处插值结果 % yh对应xh的结果 %实例:给定x0:2*pi,ysin(x),xh0:0.1:2*pi % >>x0:2*pi % …

服务器系统开机提示0xc000007b,示例电脑开机出现0xc000007b蓝屏解决办法

最近有不少网友留言给小编说&#xff0c;电脑重装完系统后重启无法进入系统&#xff0c;出现蓝屏的画面&#xff0c;其代码为0xc000007b&#xff0c;到底是什么意思呢&#xff1f;下面让小编教你如何解决电脑开机蓝屏的状况吧&#xff0c;出现这样情况的朋友可以了解下哦。电脑…

Visual Studio 2008 Beta 2 VPC寿命延长

在2007年10月29日之前下载的Visual Studio 2008 Beta 2 VPC将在2007年11月1日过期&#xff0c;比之前预估的要早。不过好消息是Microsoft现在又有了新的VPC可以下载。 \u0026#xD;\n这个消息直接来自Visual Studio 2008下载网站&#xff0c;上面说&#xff1a; \u0026#xD;\n10月…

IP例化模板的位置

IP例化模板的位置 建立好IP核后&#xff0c;在soure模框中点击IP Soure,然后选择Instantiation Template 欢迎关注我&#xff0c;关于FPGA的问题欢迎留言讨论&#xff01;

说不尽的蒙古人:推荐多兰的诗歌

上个月在母校中央民族大学参加了蒙古族诗人多兰的研讨会。多兰毕业于中央民族大学蒙古语言文学系&#xff0c;现在北京大学东方语言文学系任教。多兰是用蒙古语写作的诗人&#xff0c;所以他出版的诗集《蒙古人》我几乎看不懂&#xff0c;但是在研讨会上我听人朗诵了几段&#…

MATLAB 牛顿迭代算法

%程序:nton.m %功能:牛顿迭代法&#xff08;MATLAB R2009a&#xff09; %说明:fx是char型的MATLAB的有效表达式&#xff0c;以x为自变量&#xff0c;并且可求导数 % x0迭代初值 % tol迭代误差 % N迭代的上限 % z返回值 % n返回迭代的次数 %实例:用牛顿迭代…

boa服务器怎样运行,boa服务器的配置与编译

上午看了下boa服务器的配置与编译&#xff0c;还不算难。对我而言&#xff0c;重在理解概念就行。不过&#xff0c;还是基于PC。交叉编译以后尝试。系统:ubuntu10.04boa版本:boa-0.94.13.tar.gz内核:linux2.6.32相关理论:Boa是一种非常小巧的Web服务器&#xff0c;其可执行代码…

女性自我的迷宫:看EMI的人体自拍

最近在北京798的映艺术中心&#xff0c;展出了EMI和高媛两位女摄影师的摄影作品。 其中EMI的主题叫《自我的迷宫》&#xff0c;是EMI的自拍人体作品。EMI生于北京。2000年开始在日本做自由摄影师。参加过许多国内外的摄影展。 我们知道&#xff0c;这些年随着数码摄影技术的普及…

matlab 6.5 设计数字滤波器

1、用脉冲响应不变法设计一个Butterworth低通数字滤波器&#xff0c;通带截止频率为0.4π &#xff0c;通带波纹Rp小于3dB&#xff0c;阻带边界频率为0.6π&#xff0c;阻带衰减大于15dB&#xff0c;采样频率Fs10000Hz。假设一个信号 其中f11000Hz,f24000Hz。试将原信号与通…

雪后长春的几张照片

长春郊区&#xff0c;雪后的净月坛&#xff0c;很美。两个亲昵的小天使&#xff0c;坐在月牙上&#xff0c;寒冷的冰雪与他们无关。两个恋人在薄薄的冰面上玩耍&#xff0c;脚底时而传来吱吱的冰裂的声响&#xff0c;我真为他们担心。但是热恋的人应该不在乎生死的。别致典型的…

IP核的自动仿真

IP核的自动仿真 欢迎关注我&#xff0c;关于FPGA的问题欢迎留言讨论&#xff01;

浏览器自定义css代码,根据浏览器不同设置CSS

【实例名称】根据浏览器不同设置CSS【实例描述】不同的浏览器在同样的CSS下显示效果可能不同&#xff0c;有时候为了保证界面的一致性&#xff0c;需要根据浏览器的不同设置相应的CSS。【实例代码】标题页-学无忧(www.xue51.com)if ((navigator.appName "Microsoft Inter…

汇编语言程序设计,计算比赛成绩

一、设计内容与设计要求1.课程设计目的&#xff1a;《汇编语言程序设计》是计算机专业的重要的专业基础课&#xff0c;通过本课程设计使学生进一步巩固课堂所学&#xff0c;全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧&#xff0c;进一步提高编写程序、阅读分析程序…

丈夫绝不受人怜

最近,同心出版社出版了中国京剧作家翁偶虹先生的遗著《翁偶虹编剧生涯》&#xff08;2008年1月出版&#xff0c;定价&#xff1a;39元&#xff09;。一般人也许不知道他&#xff0c;但是喜欢京剧的读者一定知道京剧《锁麟囊》和样板戏《红灯记》&#xff0c;这些家喻户晓的剧目…

用移位实现除以或者乘以一个数

用移位实现除以或者乘以一个数 一些2的次幂需要常记&#xff01; 2^0 1 2^1 2 2^2 4 2^3 8 2^4 16 2^5 32 2^6 64 2^7 128 2^8 256 2^9 512 2^10 1024 2^(-1) 0.5 2^(-2) 0.25 2^(-3) 0.125 2^(-4) 0.0625 2^(-5) 0.03125 2^(-6) 0.015625 2^(-7) 0.007812…

我不愿意直接表达情绪:答上海《新闻晨报》记者顾筝小姐问

1987年10月&#xff0c;与《北京文学》杂志社的同事在一起。照片中的七个人现在只有一个人还在《北京文学》任职。他们分别是&#xff08;前排自左&#xff09;傅锋、陈世崇、赵李红、仲维萍、汪爱珠。&#xff08;后排自右&#xff09;路崇勋和我。上海《新闻晨报》记者 顾筝 …

IC芯片

5.8寸显示屏/LB058WQ1(SD)01LG274HC04 0.3NXP10K 74HC138 0.37NXP20K 74HC245 0.52NXP30K 74HC595 明威 她买的0.22 SST39SF040 PLCC32 09 SST1500 D2553100 BD989710 FDD8447LFAIRCHILD20 TDA817720 24C0850 TDA8350Q10 RU4A50 TDA91185 …

服务器未进系统如何关机,云服务器关机了怎么开机

云服务器关机了怎么开机 内容精选换一换只有当云服务器处于关机状态&#xff0c;才能执行启动操作。只有当云服务器处于开机状态&#xff0c;才能执行关机操作。用户可以在管理控制台对专属主机上的云服务器进行管理类操作&#xff0c;包括开机、关机、重启、删除。登录管理控制…

2008年夜饭时随手拍的两张照片

我们在蒙古包里就餐&#xff0c;歌手来唱歌。而后面的门像是一面镜子。新来的一个歌手&#xff0c;看着像是跳骑马舞的。他的服装很有特点。

上升沿的检测

上升沿的检测 第一种方法 input vsync; reg vsync_r1; reg vsync_r2; wire vsync_rise; wire vsync_r2_n; always(posedge clk) beginvsync_r1 < vsync;vsync_r2 < vsync_r1; end assign vsync_r2_n ~vsync_r2; assign vsync_rise vsync_r1 & vsync_r2_n ;第二…