RS323串口连接仪器,接收仪器信息

SerialPort sp1 = new SerialPort();
getBloodPressur();

public void getBloodPressur()
        {
            try
            {
                string[] str = SerialPort.GetPortNames();
                if (str == null)
                {
                    MessageBox.Show("仪器未连接,请确认连接是否正常!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                sp1.DataReceived += new SerialDataReceivedEventHandler(sp1_DataReceived);
                //准备就绪
                sp1.DtrEnable = true;
                sp1.RtsEnable = true;
                //设置数据读取超时为1秒
                sp1.ReadTimeout = 2000;

                foreach (string s in System.IO.Ports.SerialPort.GetPortNames())//获取有多少个COM口
                {
                    sp1.PortName = s;
                }
                sp1.BaudRate = System.Convert.ToInt32("2400");      //波特率
                sp1.DataBits = System.Convert.ToInt32("7");       //数据位
                sp1.StopBits = StopBits.One;//停止位
                sp1.Parity = Parity.Even;//校验位
                sp1.Close();
                if (sp1.IsOpen == true)//如果打开状态,则先关闭一下
                {
                    sp1.Close();
                }
                sp1.Open();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

void sp1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            if (sp1.IsOpen)
            {

                byte[] byteRead = new byte[sp1.BytesToRead];    //BytesToRead:sp1接收的字符个数

                try
                {
                    Byte[] receivedData = new Byte[sp1.BytesToRead];        //创建接收字节数组
                    sp1.Read(receivedData, 0, receivedData.Length);         //读取数据

                    sp1.DiscardInBuffer();                                  //清空SerialPort控件的Buffer

                    string strRcv = null;
                    for (int i = 0; i < receivedData.Length; i++)
                    {
                        strRcv += ((char)System.Convert.ToInt32(receivedData[i]));
                    }
                    Thread.Sleep(500);

                    if (strRcv.Split(‘ ‘).Length > 3)
                    {
                        strBloodPressur = strRcv.Substring(strRcv.Length - 13, 11);

                        if (dicBloodPressur.ContainsKey("7") && dicBloodPressur.ContainsKey("8") && dicBloodPressur.ContainsKey("9"))
                        {

                            if (dtExamCopy.Select("EXAM_ID = ‘" + dicBloodPressur["7"].Split(‘,‘)[0] + "‘ AND EXAM_DETAIL_ID = ‘" + dicBloodPressur["7"].Split(‘,‘)[1] + "‘")[0]["RESULT_VALUE"].ToString().Trim().Length == 0)
                            {
                                dtExamCopy.Select("EXAM_ID = ‘" + dicBloodPressur["7"].Split(‘,‘)[0] + "‘ AND EXAM_DETAIL_ID = ‘" + dicBloodPressur["7"].Split(‘,‘)[1] + "‘")[0]["RESULT_VALUE"] = System.Convert.ToInt32(strBloodPressur.Split(‘ ‘)[0]).ToString() + "/" + System.Convert.ToInt32(strBloodPressur.Split(‘ ‘)[1]).ToString();
                                checkExamItemAbnormal(dtExamCopy.Rows.IndexOf(dtExamCopy.Select("EXAM_ID = ‘" + dicBloodPressur["7"].Split(‘,‘)[0] + "‘ AND EXAM_DETAIL_ID = ‘" + dicBloodPressur["7"].Split(‘,‘)[1] + "‘")[0]));
                            }
                            else
                            {
                                dtExamCopy.Select("EXAM_ID = ‘" + dicBloodPressur["8"].Split(‘,‘)[0] + "‘ AND EXAM_DETAIL_ID = ‘" + dicBloodPressur["8"].Split(‘,‘)[1] + "‘")[0]["RESULT_VALUE"] = System.Convert.ToInt32(strBloodPressur.Split(‘ ‘)[0]).ToString() + "/" + System.Convert.ToInt32(strBloodPressur.Split(‘ ‘)[1]).ToString();
                                checkExamItemAbnormal(dtExamCopy.Rows.IndexOf(dtExamCopy.Select("EXAM_ID = ‘" + dicBloodPressur["8"].Split(‘,‘)[0] + "‘ AND EXAM_DETAIL_ID = ‘" + dicBloodPressur["8"].Split(‘,‘)[1] + "‘")[0]));
                            }
                            dtExamCopy.Select("EXAM_ID = ‘" + dicBloodPressur["9"].Split(‘,‘)[0] + "‘ AND EXAM_DETAIL_ID = ‘" + dicBloodPressur["9"].Split(‘,‘)[1] + "‘")[0]["RESULT_VALUE"] = System.Convert.ToInt32(strBloodPressur.Split(‘ ‘)[2]).ToString();

                            checkExamItemAbnormal(dtExamCopy.Rows.IndexOf(dtExamCopy.Select("EXAM_ID = ‘" + dicBloodPressur["9"].Split(‘,‘)[0] + "‘ AND EXAM_DETAIL_ID = ‘" + dicBloodPressur["9"].Split(‘,‘)[1] + "‘")[0]));
                        }
                    }

                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            else
            {
                MessageBox.Show("仪器未连接,请确认仪器连接是否正常!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

原文地址:https://www.cnblogs.com/6B23/p/12205140.html

时间: 2024-10-11 16:49:08

RS323串口连接仪器,接收仪器信息的相关文章

MQTT的学习研究(四)moquette-mqtt 的使用之mqtt Blocking API客户端订阅并接收主题信息

在上面两篇关于mqtt的broker的启动和mqtt的服务端发布主题信息之后,我们客户端需要订阅相关的信息并接收相关的主题信息. Java代码   package com.etrip.mqtt; import java.net.URISyntaxException; import org.fusesource.mqtt.client.BlockingConnection; import org.fusesource.mqtt.client.MQTT; import org.fusesource.

socket 异步接收连接和接收数据

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net.Sockets; using Syst

mac下,mysql5.7.18连接出错,错误信息为:Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)

mac下,mysql5.7.18连接出错,错误信息为:Access denied for user 'root'@'localhost' (using password: YES)()里面的为shell中输入的命令,一定要输全包括:&等符号 第一步:苹果->系统偏好设置->最下面点MySQL,关闭mysql服务 第二步:进入终端输入(cd /usr/local/mysql/bin/)回车输入(sudo su)回车以获取管理员权限输入(./mysqld_safe --skip-grant

微信开发(3) -- 支付后接收回调信息测试

场景:例如购买商品弹出支付二维码,用户扫码支付后,微信服务器会回调本次支付的结果到你的服务器. 我们需要知道这次支付的结果,但是我们该怎么测试呢?请往下看 1.设置回调地址 微信服务器会发信息到我们的系统,但是它不知道该发去哪里,所以,我们先到商户平台设置(之前在公众平台设置,2017年8月1日之后改到商户平台设置). 2.保存回调信息,开发测试 微信服务器发了神马东西过来,我们在接收信息的方法里面,把接收的信息保存起来,然后就能测试数据了.

stm32RS485串口通信——中断接收发送数据

功能:通过PC机的串口调试助手发送数据给串口A,串口B接收到串口A发送的数据,再由串口B将接收到的数据返回给PC机的串口调试助手. PC->串口A->串口B->PC. 实验平台:stm32f407 /********************************************************************* 本平台具有六个串口: com1  485 com2 com3  232 需一个管脚控制DTU com4 485 com5  调试串口  TTL com6

android 判断网络连接、sim卡信息以及ping操作是否网络连接正常

  //判断是否为wifi连接     public boolean isWifiConnected(Context context) {         if (context != null) {             ConnectivityManager mConnectivityManager = (ConnectivityManager) context                     .getSystemService(Context.CONNECTIVITY_SERVI

012开发板串口连接

步骤一:连线 将开发板和PC机通过USB转串口线连接起来: 步骤二:安装USB转串口驱动 一般买板子时都会自带驱动,如果自带的驱动不能安装,遇到问题,可以网上搜索别人的经验: 自己安装CH340-USB转串口驱动CH341SER时出现了问题,明明显示驱动安装成功: 但是,在设备管理器中,该串口前面还是有黄色的叹号: 后来,在网上搜索之后,找到好心人分享的经验:http://blog.csdn.net/gsj0791/article/details/17664861 下载并且安装了PL2303_P

EOS代码分析5 接收网络信息

网络部分:Main(){app().set_version(eosio::nodeos::config::version);app().register_plugin<history_plugin>(); //通过register_plugin()函数将插件注册到application的plugins插件集合中,plugins是一个map容器auto root = fc::app_path(); //设定数据和配置路径app().set_default_data_dir(root / &quo

[iOS 多线程 &amp; 网络 - 2.0] - 发送接收 服务器信息

A.搭建java服务器 使用eclipse.tomcat和struts2框架搭建一个简单的服务器 1.准备好合适版本的JDK.eclipse EE.tomcat.struts2 框架包 2.配置JDK和tomcat系统变量 3.在eclipse中创建一个Dynamic Web Project, 勾选创建web.xml 4.解压一个struts2中的app范例,参考其中的web.xml和struts.xml配置 5.配置tomcat,注意配置正确的服务器的路径和发布路径,不要使用默认的eclips