/// <summary> /// 读设备信息 /// </summary> public void Request_Ver() { string strSendVer, strRecVer; int lenVer, ret; byte[] byteRecVer = new byte[21]; strSendVer = "#01I\r\n"; byte[] byteSendVer = Encoding.Default.GetBytes(strSendVer); ret = sio_flush(ExGlobal.Port, 2); if (ret != ExGlobal.SIO_OK) { MxTool.MxShowError("sio_flush", ret); return; } sio_write(ExGlobal.Port, @byteSendVer, byteSendVer.Length); Thread.Sleep(100); lenVer = sio_read(ExGlobal.Port, @byteRecVer, 21); if (lenVer <= 0) { MessageBox.Show("No Data Received!", "sio_read", MessageBoxButtons.OKCancel); return; } strRecVer = Encoding.Default.GetString(byteRecVer); string[] delimiters = { ":" }; string[] analyVer = strRecVer.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); StatusVer.Text = analyVer[1]; }
/// <summary> /// 打开端口,读取设备信息 /// </summary> /// <returns></returns> public Boolean OpenPort() { int ret; Boolean Openport = false; ret = sio_open(ExGlobal.Port); if (ret != ExGlobal.SIO_OK) { MxTool.MxShowError("sio_open", ret); return(Openport); } if (PortSet() == false) { sio_close(ExGlobal.Port); return(Openport); } getCommData.GetCommData(ExGlobal.iPort, ExGlobal.ibaudrate, ExGlobal.iparity, ExGlobal.ibytesize, ExGlobal.istopbits); ExGlobal.GhExit = false; ExGlobal.GbOpen = true; StatusConnect.Text = "Online"; StatusConnect.BackColor = Color.LimeGreen; SwitchMenu(); this.Text = ExGlobal.ShowStatus(); Openport = true; Request_Ver(); thReadMeas = new Thread(new ThreadStart(ReadThreadExecute)) { IsBackground = true }; thReadMeas.Start(); delRead = new Mydel(ShowData); return(Openport); }
/// <summary> /// 端口设置 /// </summary> /// <returns></returns> public Boolean PortSet() { int port, mode, hw, sw, ret, tout; Boolean PortSet = false; port = ExGlobal.Port; mode = ExGlobal.ByteSize | ExGlobal.StopBits | ExGlobal.Parity; if (ExGlobal.Hw) { hw = 3; } else { hw = 0; } if (ExGlobal.Sw) { sw = 12; } else { sw = 0; } ret = sio_ioctl(port, ExGlobal.BaudRate, mode); if (ret != ExGlobal.SIO_OK) { MxTool.MxShowError("sio_ioctl", ret); return(PortSet); } ret = sio_flowctrl(port, hw | sw); if (ret != ExGlobal.SIO_OK) { MxTool.MxShowError("sio_flowctrl", ret); return(PortSet); } tout = 512 * 1000 / sio_getbaud(ExGlobal.Port) * 3; //ms /byte ret = sio_SetWriteTimeouts(ExGlobal.Port, tout); if (ret != ExGlobal.SIO_OK) { MxTool.MxShowError("sio_SetWriteTimeouts", ret); return(PortSet); } this.Text = ExGlobal.ShowStatus(); PortSet = true; return(PortSet); }