CanonTX_F

来源:互联网 发布:js获取所有兄弟节点 编辑:程序博客网 时间:2024/06/04 19:17
using System;using System.Collections.Generic;using System.Text;using System.Collections;using System.Timers;using Canon.Medical.Common.Engine.SerialDeviceDll;using System.IO.Ports;using System.Diagnostics;using System.IO;using System.Windows.Forms;namespace CYYF.CheckUPInstruments.DataExchange{    /// <summary>    /// CanonTX_F    /// author CYTD Young    /// 2017-06-24 09:40:12    /// music: Keith Jarrett - The Koln Concert 1975    /// </summary>    public class CanonTX_F : ComTransferBase, IAccessInstrument    {        private System.Timers.Timer _objTimer = new System.Timers.Timer(1);        //private bool _bolSentInfo = true;        private byte[] _bytArrSendInfo = { 0x02, 0x38 };        public event EventHandler OnCheckEnd;        public Hashtable CheckItemCodes { set; get; }        private List<byte> binaryData = new List<byte>();        private byte[] buf = new byte[0x1000];        private const int bufferSize = 0x1000;        private bool communicationFinished = false;        private int dataLength = 0;        private SerialDevice serialPort = null;        //private bool usedDsr = false;        private string viewString = "";        //private int NakReplyNumberListIndex = 0;        public List<int> nakReplyNumberList = new List<int>();        /// <summary>        ///         /// </summary>        public CanonTX_F()        {            if (this.serialPort == null)            {                this.serialPort = new SerialDevice();            }            this.serialPort.PortName = this._objSerialPort.PortName;            this.serialPort.BaudRate = uint.Parse("" + this._objSerialPort.BaudRate);// 0x2580;            this.serialPort.DataBits = byte.Parse("" + this._objSerialPort.DataBits);//8;            this.serialPort.Parity = this._objSerialPort.Parity;//Parity.None;            this.serialPort.StopBits = this._objSerialPort.StopBits;//StopBits.One;            this.serialPort.Handshake = this._objSerialPort.Handshake;//Handshake.RequestToSend;            this.serialPort.DataReceived += new OnSerialDeviceDataReceived(this.OnSerialPortDataReceived);            this.serialPort.Priority = ThreadPriorityLevel.Highest;            this.serialPort.Interval = 1;            this.serialPort.ReadTimeout = 0x186a0;            this.serialPort.WriteTimeout = 0x2710;            this.serialPort.ReadBufferSize = 0x7d000;            _objReceivedData = new ArrayList();            _objTimer.Elapsed += new ElapsedEventHandler(Timer_OnElapsed);            this.StartExchange();//开启端口:生产环境要打开;test工程测试时候要注释        }        private void Timer_OnElapsed(object sender, ElapsedEventArgs e)        {            _objTimer.Enabled = false;            ParseReceiveData();        }        private void ParseReceiveData()        {            //MessageBox.Show("ParseReceiveData1");            try            {                string strResult一次接收 = this.strReceivedData;                //MessageBox.Show("ParseReceiveData1" + strResult一次接收);                int indexZuo = strResult一次接收.IndexOf("[");                int indexYou = strResult一次接收.IndexOf("]");                //MessageBox.Show("ParseReceiveData1 z" + indexZuo + "y" + indexYou);                string resultText = strResult一次接收.Substring(indexZuo + 1, indexYou - indexZuo - 1);                //resultText = resultText.Trim();                int indexMiddle = 8;                string result右眼 = resultText.Substring(0, indexMiddle).Trim();                string result左眼 = resultText.Substring(indexMiddle).Trim();                //MessageBox.Show("ParseReceiveData1 z" + result左眼 + "y" + result右眼);                {                    CheckItemResult objEventArs4CheckEnd = new CheckItemResult();                    objEventArs4CheckEnd.ItemResult = result右眼;                    objEventArs4CheckEnd.CheckResultType = ResultType.String;                    objEventArs4CheckEnd.ItemCode = ReturnKey.YYY;                    OnCheckEnd(this, objEventArs4CheckEnd);                    //rightResult = result右眼;                }                {                    CheckItemResult objEventArs4CheckEnd = new CheckItemResult();                    objEventArs4CheckEnd.ItemResult = result左眼;                    objEventArs4CheckEnd.CheckResultType = ResultType.String;                    objEventArs4CheckEnd.ItemCode = ReturnKey.YYZ;                    OnCheckEnd(this, objEventArs4CheckEnd);                    //leftResult = result左眼;                }                //MessageBox.Show("ParseReceiveData2");            }            catch (Exception ex)            {                //MessageBox.Show("ParseReceiveData1 是否测量了两只眼" + ex.Message);            }            finally            {                _objReceivedData.Clear();                this.strReceivedData = string.Empty;            }        }        public class ReturnKey        {            public static string YYZ = "YYZ";//眼压左            public static string YYY = "YYY";//眼压右        }        private string strReceivedData;        /// <summary>        /// 接收数据        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void OnSerialPortDataReceived(object sender, SerialData e)        {            //MessageBox.Show("OnSerialPortDataReceived1");            if (true && this.communicationFinished)            {                this.ClearData();                this.communicationFinished = false;            }            //MessageBox.Show("OnSerialPortDataReceived2");            this.dataLength = this.serialPort.BytesToRead;            this.buf = this.serialPort.Read(this.dataLength);            for (int i = 0; i < this.dataLength; i++)            {                this.binaryData.Add(this.buf[i]);            }            if (this.IsEndDataBlock())            {                this.SendReply();                this.viewString = Encoding.GetEncoding("Shift_JIS").GetString(this.binaryData.ToArray(), 0, this.binaryData.Count);                if (viewString==null||string.IsNullOrWhiteSpace(viewString.Trim()))                {                    return;                }                //MessageBox.Show("OnSerialPortDataReceived3" + viewString);                this.SaveBinaryData();                //MessageBox.Show("OnSerialPortDataReceived3" + strReceivedData);                this.strReceivedData = viewString;            }            this.dataLength = 0;            _objTimer.Enabled = true;            //MessageBox.Show("OnSerialPortDataReceived3");        }        private int ReplyCount = 0;        private void ClearData()        {            this.binaryData.Clear();            this.viewString = "";            //this.NakReplyNumberListIndex = 0;            this.ReplyCount = 0;        }        public override void StartExchange()        {            //bool flag = false;            try            {                if (PortIsOpen())                {                    return;                }                //if (this.serialPort.IsExist)                //{                //    return;                //}                //_objSerialPort.Open();                this.serialPort.RtsEnable = true;                this.serialPort.DtrEnable = true;                this.serialPort.Open();                //flag = true;                //if (!this.usedDsr)                //{                    //return flag;                //}                //int num = 50;//尝试五十次                //while (!this.serialPort.DsrHolding && (num-- > 0))                //{                //    System.Threading.Thread.Sleep(10);                //}                //if (!this.serialPort.DsrHolding)                //{                //    throw new Exception("DSR not High.");                //}            }            catch (Exception exception)            {                MessageBox.Show("打开端口错误!\n" + exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);                //flag = false;            }            //return flag;        }        public override void StopExhange()        {            //_objSerialPort.Close();            try            {                this.serialPort.Close();                //return true;            }            catch (Exception exception)            {                MessageBox.Show("关闭端口错误!\n" + exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);                //return false;            }        }        public bool PortIsOpen()        {            return serialPort.IsOpen;        }        /// <summary>        /// 是否结束接收        /// </summary>        /// <returns></returns>        private bool IsEndDataBlock()        {            bool flag = false;            int count = this.binaryData.Count;            if (this.dataLength > 0)            {                              if (this.binaryData[count - 1] != 13)                {                    return flag;                }                if (count <= 1)                {                    return flag;                }                if (this.binaryData[count - 2] == 5)                {                    flag = true;                }                if (this.binaryData[count - 2] == 4)                {                    flag = true;                    this.communicationFinished = true;                }                if (this.binaryData[count - 2] == 3)                {                    flag = true;                }            }            return flag;        }        /// <summary>        /// 保存二进制        /// </summary>        /// <param name="strm"></param>        private void SaveBinaryData()        {            FileStream stream;            string str = "BIN_" + "TXF" + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".bin";            string str6 = Application.StartupPath + @"\\";            string path = str6 + str;                stream = new FileStream(path, FileMode.Create);                stream.Write(this.binaryData.ToArray(), 0, this.binaryData.Count);                stream.Close();        }        /// <summary>        /// 发数据        /// </summary>        /// <param name="data"></param>        private void SendData(byte[] data)        {            this.serialPort.Write(data);        }        /// <summary>        /// 重放        /// </summary>        private void SendReply()        {            byte[] buffer = new byte[10];            List<byte> list = new List<byte>();            this.ReplyCount++;                list.Add(6);            list.Add(13);            this.SendData(list.ToArray());        }        private enum FormatName        {            FMT_R10,            FMT_K1,            FMT_RK3,            FMT_JMOIA,            FMT_RKF2,            FMT_T2EACH,            FMT_T2ALL,            FMT_TXF,            FMT_JMOIA_TX,            FMT_TX20,            FMT_TX20P        }    }}
<?xml version="1.0"?><configuration><startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>  <!--<log4net debug="false">   <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >     <param name="File" value="e:\Applog.txt" />     <param name="datePattern" value="yyyy-MM-dd HH:mm" />     <param name="AppendToFile" value="true" />          <layout type="log4net.Layout.PatternLayout">       <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />    </layout>      </appender>   <appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender" >     <layout type="log4net.Layout.PatternLayout">       <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />          </layout>      </appender>   <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >     <layout type="log4net.Layout.PatternLayout">       <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />          </layout>      </appender>   <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">     <param name="File" value="e:\Log.txt" />     <param name="AppendToFile" value="true" />     <param name="MaxSizeRollBackups" value="10" />     <param name="MaximumFileSize" value="5MB" />     <param name="RollingStyle" value="Size" />     <param name="StaticLogFileName" value="true" />    <layout type="log4net.Layout.PatternLayout">       <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />          </layout>      </appender>   <root>     <level value="DEBUG" />     <appender-ref ref="LogFileAppender" />      </root>  </log4net>--></configuration>


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝买家被检测有虚拟交易怎么办 媒体声音突然没有声音了该怎么办 华为微信运动步数为零怎么办 淘宝店铺没货了客户拍了怎么办 房子涨价了卖家反悔不卖了怎么办 买的东西很贵质量不好怎么办 在淘宝开的店账号忘了怎么办 建了个淘宝优惠券群没人购物怎么办 刚开的淘宝店没有生意怎么办 房产代理公司不给渠道结佣金怎么办 天猫超过72小时不发货怎么办 流量魔盒苹果下载怎么打不开怎么办 淘宝包邮店铺新疆地区拍怎么办 淘宝客服当顾客要优惠时怎么办 微信手机号注册的找不到了怎么办 之前注册的微信找不到了怎么办 苹果ipad的id密码忘了怎么办 淘宝和支付宝用一张银行卡怎么办 淘宝卖家填写虚假物流信息怎么办 淘宝店铺的浏览量越来越少怎么办 网上充手机话费充错了怎么办 夜神模拟器上陌陌的位置不对怎么办 如果在大庭广众之下放了个屁怎么办 淘宝分销上传宝贝被系统下架怎么办 酷狗喜欢歌单里面的歌都没了怎么办 苹果手机下载不了微信缓冲怎么办 登陆微信提示版本过低登不了怎么办 苹果手机微信版本过低登不上怎么办 微信小程序显示微信版本过低怎么办 三星手机登微信显示版本过低怎么办 微信版本低无法登录无法升级怎么办 手机淘宝五应用界面无法打开怎么办 入住淘宝主播没有微博粉丝怎么办 手机淘宝领金币怎么没有了怎么办 淘宝荬家缺货对付款买家怎么办 淘宝买家确认收货后申请退款怎么办 淘宝东西失效了但付过款了怎么办 淘宝图片被投诉盗图怎么办原图没了 淘宝退款申请不小心撤销了怎么办 淘宝不小心点了撤销退款怎么办 淘宝上退款不小心撤销了怎么办