单片机解密上位机为获取心电数据必须要使用某种数据传送方式,考虑到数据传送的速度以及其后期设备的扩展,使用UART串口是最好的选择,考虑到数据较多因此串口通信的波特率为115200,同时为了便于数据的解析定义了数据发送的数据包格式(#+0000&)其中首位和末位为校验位第二位为数据的正负,第三到第六位为数据,由于实际数据较小这里将数据放大1000倍传输,在STM32端将数据转换成数据包格式并且发送,上位机将数据接收并解析成有效的心电数据并显示。
上位机接收数据使用了WINFORM的SERIALPORT控件,单片机解密该控件可以提供对串口的配置、打开关闭、以及数据的接收和发送。在串口接收数据时存在进程锁死的问题因此需要使用多线程来防止锁死,图4-10与图4-11分别描述了串口的配置界面与接收的数据。
串口接收函数:
- private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
- {
- string serialReadString, text;
- string DataSymb;
- string DataMain;
- serialReadString = serialPort1.ReadExisting();
- this.textBoxData.Invoke
- (
- new MethodInvoker
- (
- delegate
- {
- try
- {
- this.textBoxData.AppendText(serialReadString);
- text = textBoxData.Text;
- if (text.Length > 1)
- {
- if (DataEnable == true)
- {
- TextDataTotal += serialReadString;
- }
- else if(DataEnable == false)
- {
- //TextDataTotal = "";
- }
- }
- }
- catch { }
- }
- )
- );
- }