[西门子] C# WPF框架 串口通信

[复制链接]
查看80050 | 回复0 | 前天 14:28 | 显示全部楼层 |阅读模式
WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

----串口通信----

串口通信是指外设和计算机之间通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口通信可以是基于‌RS-232、‌RS-485、‌UART(通用异步收发器)或‌USART(通用同步/异步收发器)等标准。串口通信可以是异步的,也可以是同步的,并且可以是全双工或半双工的。

----采用虚拟串口驱动进行调试----



----前端画面展示----



----前端代码展示----<TextBlockText="串口端口"Grid.Row="0"Grid.Column="0"FontSize="15"Margin="23,7,2,8"/><ComboBoxx:Name="cmb_com"Width="125"Height="25"Margin="3,7,97,8"Grid.Row="0"Grid.Column="1"VerticalContentAlignment="Center"/><TextBlockText="波特率"Grid.Row="1"FontSize="15"Margin="23,7,2,8"/><ComboBoxx:Name="cmb_bote"Width="125"Height="25"Margin="3,7,97,8"Grid.Row="1"Grid.Column="1"VerticalContentAlignment="Center"><ComboBoxItemContent="4800"/><ComboBoxItemContent="9600"/><ComboBoxItemContent="14400"/><ComboBoxItemContent="28800"/></ComboBox><TextBlockText="数据位"Grid.Row="2"FontSize="15"Margin="23,7,2,8"/><ComboBoxx:Name="cmb_bate"Width="125"Height="25"Margin="3,7,97,8"Grid.Row="2"Grid.Column="1"VerticalContentAlignment="Center"><ComboBoxItemContent="5"/><ComboBoxItemContent="6"/><ComboBoxItemContent="7"/><ComboBoxItemContent="8"/></ComboBox><TextBlockText="奇偶校验"Grid.Row="3"FontSize="15"Margin="23,7,2,8"/><ComboBoxx:Name="cmb_jiou"Width="125"Height="25"Margin="3,7,97,8"Grid.Row="3"Grid.Column="1"VerticalContentAlignment="Center"><ComboBoxItemContent="None"/><ComboBoxItemContent="Odd"/><ComboBoxItemContent="Even"/><ComboBoxItemContent="Mark"/><ComboBoxItemContent="Space"/></ComboBox><TextBlockText="停止位"Grid.Row="4"FontSize="15"Margin="23,7,2,8"/><ComboBoxx:Name="cmb_Stop"Width="125"Height="25"Margin="3,7,97,8"Grid.Row="4"Grid.Column="1"VerticalContentAlignment="Center"><ComboBoxItemContent="One"/><ComboBoxItemContent="OnePoinFive"/><ComboBoxItemContent="Two"/></ComboBox><ButtonName="but_open"Content="打开"Grid.Row="5"Grid.Column="1"Width="75"Height="26"Margin="33,16,142,-2"Click="but_open_Click"/>
----后端代码展示----
publicMainWindow(){    InitializeComponent();//初始化控件的界面    InitUI();        //实例化串口对象    serial = new SerialPort();//订阅收到数据的事件    serial.DataReceived += Serial_DataReceived;
    timer=new DispatcherTimer();    timer.Tick += Timer_Tick;
}
----收到数据的事件----
privatevoidSerial_DataReceived(object sender, SerialDataReceivedEventArgs e){this.Dispatcher.Invoke(new Action(delegate    {int len = serial.BytesToRead;if (len > 0)        {byte[] data = newbyte[len];int ret = serial.Read(data, 0, len);//获取原有的文本            String strText = txt_Recv.Text;//把收到的文本进行编码            String strRecv = Encoding.UTF8.GetString(data);//获取时间            String strTime = DateAndTime.Now.ToString("y M  HH:mm:ss.fff:");//显示接收的数据            txt_Recv.Text = strTime + strRecv + "\r\n" + strText;
        }    }));}
----发送按钮的设置----

privatevoidbut_send_Click(object sender, RoutedEventArgs e){//串口打开才发送if (serial.IsOpen)     {        String strSend=txt_send.Text;
byte[] data=Encoding.UTF8.GetBytes(strSend);//发送数据到串口        serial.Write(data,0,data.Length);int interval=Convert.ToInt32(txt_time.Text);        timer.Interval =new TimeSpan(0, 0, 0,0,interval);        timer.Start();    }
}----视频演示----

video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3644825463698194434

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则