Tony.SerialPorts.RS232串口模块(二)

Tony.SerialPorts.RS232.IRS232参考

- ⑴.属性:
- 1. Settings 【串口参数配置】【读及设置】
- RS232Setting类型。
- 打开串口前配置,打开串口后禁止改变。
- ①.不传入,内部生成:不推荐。
- ②.IRS232初始化时传入已配置好的RS232Setting文件路径,自行读取。
- 2. UserName 【实例化时名称[以用于区分实例]】【读】
- string类型
- 3. DTRavailable 【True if the DTR pin is controllable via the DTR property】【读】
- bool类型
- 4. RTSavailable 【True if the RTS pin is controllable via the RTS property】【读】
- bool类型
- 5. DTR 【The state of the DTR modem control output】【读及设置】
- bool类型
- 6. RTS 【Set the state of the RTS modem control output】【读及设置】
- bool类型
- 7. Online 【串口是否打开】【读】
- bool类型
- 8. UseUNICODE 【汉字通讯接受方式,默认使用:汉字接受方式】【读及设置】
- bool类型
- true-汉字接受方式;false-字符接受方式。
- 此设置没在RS232Setting体现,需要时单独设置。
- 9. TransactFlag 【Transact接收标志】【读及设置】
- bool类型
- 一般不要设置(高级)
- 10. ReceiveFlag 【数据允许接收标志位】【读及设置】
- bool类型
- 一般不要设置(高级)
- 11. Immediate 【发送方式选择】【读及设置】
- bool类型
- 无用途。
- 12. RESPState 【串口状态改变时是否响应Transact】【读及设置】
- bool类型
- 一般不要设置(高级)
- 13. TopString 【头字符】【读及设置】
- string类型
- 一般不要设置(高级)
- 14. DelCharCount 【需删除字符的数量】【读及设置】
- int类型
- 一般不要设置(高级)
- 15. ReErr 【取得接收错误,读取后清空错误】【读】
- System.Exception类型
- 16. Err 【串口错误,读取后清空】【读】
- Tony.SerialPorts.RS232.RS232Exception类型
- 17. InPutReadOnly 【读取串口接收数据,不删除缓存】【读】
- object类型
- 注:并不删除串口接收数据中可能存在的接收中断字符(Settings.RxPostFix)。
- 18. InPut 【读取串口接收数据,调用后删除缓存】【读】
- object类型
- 注:并不删除串口接收数据中可能存在的接收中断字符(Settings.RxPostFix)。
- 19. OutPut 【向串口发送数据】【设置】
- object类型
- 自动添加Settings.TxPostFix属性中的发送附加字符。
- 20. RxBufferCount 【已接收的字符数】【读】
- int类型
- 21. Break 【Assert or remove a break condition from the transmission line】【读及设置】
- bool类型
-
-
- ⑵.方法
- 1. Transact 【发送数据,并在指定时间内接收数据,并有数据判断功能】
- 原型:object Transact(object toSend, int gTransTimeout, int gCount, object gReturnSubValue, bool gClearOldData);
- 调用此方法向串口发送指令(自动添加Settings.TxPostFix属性中的发送附加字符。),并在此命令内部在限定的时间内等待符合条件的串口接收数据:如收到,则即刻返回数据,如未收到,则返回Null。
- 【注】:
- 此方法内部自发自收,提高了客户编程的灵活性。并不依赖于IRS232的OnRs232Receive接收事件,也不会触发OnRs232Receive接收事件。
- 此方法运行的最大时间为gTransTimeout*gCount毫秒(有可能稍微超出)。最小时间则依赖于现场情况。
- 此方法返回后会自动清除InPut属性及接收缓冲区。
- 返回类型:object类型。(返回的数据)
- 【参数说明】
- object toSend:欲向串口发送的数据(自动添加Settings.TxPostFix属性中的发送附加字符。)。
- int gTransTimeout:超时时间,单位是毫秒,如小于0则采用Settings.TransTimeout中的超时时间。(在此时间内串口接收到符合条件的数据,即刻返回数据;如否,则按此时间等待;超过此时间则按gCount允许范围内重复发送toSend指令。)
- int gCount:指定错误通讯次数上限。(在gTransTimeout规定时间内未接收到符合条件的数据,重复发送toSend指令的上限。超过gCount次数,则返回null。)
- object gReturnSubValue:数据判断量:如串口接收到的数据包含此参数包含的数据,即认为接收到符合条件数据,即刻返回数据;如否则按gCount允许范围内重复发送toSend指令;如果为“”或null则表示接收到任意数据即刻返回数据。
- bool gClearOldData:是否清除接收缓冲区(重复发送toSend指令的情况下,有可能造成串口接收缓冲区的数据堆积,故开放给客户标识是否清除接收缓冲区)
- 【建议】:
- gTransTimeout:一般设置要大于300毫秒。正常取值500毫秒。(主要依据现场情况设定)
- gCount:正常取值为3.(主要依据现场情况设定)
- gClearOldData:一般取值为true。
- 2. Transact 【发送数据,并在指定时间内接收数据】
- 原型:object Transact(object toSend, int gTransTimeout);
- 调用此方法向串口发送指令(自动添加Settings.TxPostFix属性中的发送附加字符。),并在此命令内部在限定的时间内等待串口接收数据:如收到,则即刻返回数据,如未收到,则返回Null。
- 【注】:
- 此方法内部自发自收,提高了客户编程的灵活性。并不依赖于IRS232的OnRs232Receive接收事件,也不会触发OnRs232Receive接收事件。
- 此方法运行的最大时间为gTransTimeout毫秒(有可能稍微超出)。最小时间则依赖于现场情况。
- 此方法返回后会自动清除InPut属性及接收缓冲区。
- 返回类型:object类型。(返回的数据)
- 【参数说明】
- object toSend:欲向串口发送的数据(自动添加Settings.TxPostFix属性中的发送附加字符。)。
- int gTransTimeout:超时时间,单位是毫秒,如小于0则采用Settings.TransTimeout中的超时时间。(在此时间内串口接收到数据,即刻返回数据;如否,则返回null。)
- 【建议】:
- gTransTimeout:一般设置要大于300毫秒。正常取值500毫秒。(主要依据现场情况设定)
- 3. Transact 【发送数据,并在Settings.TransTimeout时间内接收数据】
- 原型:object Transact(object toSend);
- 调用此方法向串口发送指令(自动添加Settings.TxPostFix属性中的发送附加字符。),并在Settings.TransTimeout时间内等待串口接收数据:如收到,则即刻返回数据,如未收到,则返回Null。
- 【注】:
- 此方法内部自发自收,提高了客户编程的灵活性。并不依赖于IRS232的OnRs232Receive接收事件,也不会触发OnRs232Receive接收事件。
- 此方法运行的最大时间为Settings.TransTimeout毫秒(有可能稍微超出)。最小时间则依赖于现场情况。
- 此方法返回后会自动清除InPut属性及接收缓冲区。
- 返回类型:object类型。(返回的数据)
- 【参数说明】
- object toSend:欲向串口发送的数据(自动添加Settings.TxPostFix属性中的发送附加字符。)。
- 4. Open 【打开串口】
- 调用此方法,打开串口,如打开成功,内部会调用客户在RS232Open中定义的配合事件(如配合事件运行失败,Open()返回false)。[参见 RS232Open]。
- 返回类型:bool类型(true串口成功打开;false串口打开失败)
- 5. Close 【关闭串口】
- 调用此方法,关闭串口。关闭串口前,内部会调用客户在RS232Close中定义的配合事件。[参见 RS232Close]。
- 6. Dispose 【清场】
- 7. GetSetting 【 从给定的串口参数配置文件中取得串口参数配置】
- 调用此方法,从给定的串口参数配置文件中取得串口参数配置,并设置Settings属性。
- 【注】:请不要在串口处于打开情况下,运行此方法。
- 返回类型:Tony.SerialPorts.RS232.RS232Setting类型。
- 【参数说明】
- string gPath:串口参数配置文件路径(含名称)
- 8. GetQueueStatus【查询串口接收/发送队列状态】
- 返回类型:Tony.SerialPorts.RS232.QueueStatus类型。
- 9. IsCongested 【数据通讯状态是否正常】
- /// Test if the line is congested (data being queued for send faster than it is being dequeued)。 This detects if baud rate is too slow or if handshaking is not allowing enough transmission time. It should be called at reasonably long fixed intervals. If data has been sent during the interval, congestion is reported if the queue was never empty during the interval.
- 返回类型:bool类型。
- 10. Flush 【不要使用(高级)】;
- 11. AddTxPostFixByteArray【不要使用(高级)】;
- 12. Delay 【不要使用(高级)】;
- 13. DelayD 【不要使用(高级)】;
- 14. GetRS232Value【不要使用(高级)】;
-
-
- ⑶.事件
- 1. OnRs232Receive【串口接收事件】
- 原型:public event OnRs232Handler OnRs232Receive
- 产生源:参见OnRs232Handler中的事件类别。
- 例:
- 加载:IRS232Comm1.OnRs232Receive += new Tony.SerialPorts.RS232.OnRs232Handler(IRS232Comm1_OnRs232Receive);(IRS232Comm1类型为Tony.SerialPorts.RS232.IRS232)。
- 卸载:IRS232Comm1.OnRs232Receive -= new Tony.SerialPorts.RS232.OnRs232Handler(IRS232Comm1_OnRs232Receive);(IRS232Comm1类型为Tony.SerialPorts.RS232.IRS232)。
- 【参数】:IRS232Comm1_OnRs232Receive:串口接收事件引用。
- 委托原型:public delegate void OnRs232Handler(object s, int t, string gUserName);
- 【参数】:
- object s: 数据,【根据事件类别t区分数据。】(如是串口接收数据,并未清空缓冲。正常请读取.InPut属性);
- int t:事件类别;
- a.t=1:串口接收数据时,满足接收数据中断条件产生的事件:引发源有:1.接收到中断字符;2.满足接收数据长度条件。【RS232Setting的RxPostFix属性及RxThreshold属性】【OnRxChar】
- b.t=2:外部调用时使用(内部无产生源):如客户调用OnRs232Receive产生的事件。
- c.t=3:串口暂停 引发源有:串口底层Break【此时s: 数据为“串口暂停”】【OnBreak】
- d.t=4:串口状态改变 引发源有:串口底层Tony.SerialPorts.RS232.ModemStatus状态改变。【此时s: 数据为:(ModemStatus.cts? "1":"0") + (ModemStatus.dsr? "1":"0") + (ModemStatus.rlsd? "1":"0") + (ModemStatus.ring? "1":"0")】【OnStatusChange】【具体方法另行提供】
- e.t=5:串口出现错误产生的事件【一般用于错误时使用】:引发源有:OutPut属性【此时s: 数据为错误信息】【OutPutT/OutPut】
- string gUserName:参数为串口实例化名称(Tony.SerialPorts.RS232.IRS232)[以用于区分实例]。
- 2. RS232Open【串口打开后的配合事件】
- 原型:public event RS232OpenHandler RS232Open
- 产生源:Open()方法。
- 说明:
- 此事件开放给客户,以利于当底层串口打开后处理的一些开放操作。
- 如串口Open()成功,运行配合事件。
- 如串口Open()失败,忽略配合事件。
- 如配合事件运行成功(返回true),串口以打开状态返回。
- 如配合事件运行失败(返回false、或抛出错误),串口以关闭状态返回。
- 例:
- 加载:IRS232Comm1.RS232Open += new Tony.SerialPorts.RS232.RS232OpenHandler(IRS232Comm1_RS232Open);(IRS232Comm1类型为Tony.SerialPorts.RS232.IRS232)。
- 卸载:IRS232Comm1.RS232Open -= new Tony.SerialPorts.RS232.RS232OpenHandler(IRS232Comm1_RS232Open);(IRS232Comm1类型为Tony.SerialPorts.RS232.IRS232)。
- 【参数】:IRS232Comm1_RS232Open:串口打开配合事件引用。
- 委托原型:public delegate bool RS232OpenHandler(string gUserName);
- 【参数】:
- string gUserName:参数为串口实例化名称(Tony.SerialPorts.RS232.IRS232)[以用于区分实例]。
- 3. RS232Close【串口关闭前的配合事件】
- 原型:public event RS232CloseHandler RS232Close
- 产生源:Close()方法。
- 说明:
- 此事件开放给客户,以利于当底层串口关闭前处理的一些开放操作。
- 串口关闭前运行此事件。
- 无论此事件运行结果如何,都将关闭串口。
- 例:
- 加载:IRS232Comm1.RS232Close += new Tony.SerialPorts.RS232.RS232CloseHandler(IRS232Comm1_RS232Close);(IRS232Comm1类型为Tony.SerialPorts.RS232.IRS232)。
- 卸载:IRS232Comm1.RS232Close -= new Tony.SerialPorts.RS232.RS232CloseHandler(IRS232Comm1_RS232Close);(IRS232Comm1类型为Tony.SerialPorts.RS232.IRS232)。
- 【参数】:IRS232Comm1_RS232Close:串口关闭前配合事件引用。
- 委托原型:public delegate void RS232CloseHandler(string gUserName);
- 【参数】:
- string gUserName:参数为串口实例化名称(Tony.SerialPorts.RS232.IRS232)[以用于区分实例]。
-
- ⑷.【OnRs232Receive事件与Transact(……)方法在接收串口数据上的区别】
- ①.OnRs232Receive事件机制:客户向OutPut属性向串口发送指令,当串口接收到符合条件(中断字符条件、数据长度条件)后,产生OnRs232Receive事件供客户接收处理数据。
- ②.Transact(……)方法重点在于自己发指令,自己回收数据,方法内自动完成。不需同步,不依赖于其他,利于客户复杂编程。
- ③.利用OutPut属性、OnRs232Receive事件接收数据需要做好同步,这是传统方法,复杂编程时逻辑难懂。
- ④.Transact(……)方法具有简单数据逻辑判断功能、失败congfa重发功能。这点OnRs232Receive事件本身不具备,需客户自己编程处理。
- ⑤.OnRs232Receive事件可以响应独立的不依赖于指令的Tony.SerialPorts.RS232.ModemStatus状态改变。
- ⑥.Transact(……)方法无法响应独立的不依赖于指令的Tony.SerialPorts.RS232.ModemStatus状态改变。
- ⑦.接收串口数据时Transact(……)方法与OnRs232Receive事件互为独立。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RS232 串口模块 //Reading / Writing Methods DWORD Read(void* lpBuf, DWORD dwCount); BOOL Read(void* lpBuf, DWORD dwCount, OVERLAPPED& overlapped); void ReadEx(void* lpBuf, DWORD dwCount); DWORD Write(const void* lpBuf, DWORD dwCount); BOOL Write(const void* lpBuf, DWORD dwCount, OVERLAPPED& overlapped); void WriteEx(const void* lpBuf, DWORD dwCount); void TransmitChar(char cChar); void GetOverlappedResult(OVERLAPPED& overlapped, DWORD& dwBytesTransferred, BOOL bWait); void CancelIo(); //Configuration Methods void GetConfig(COMMCONFIG& config); static void GetDefaultConfig(int nPort, COMMCONFIG& config); void SetConfig(COMMCONFIG& Config); static void SetDefaultConfig(int nPort, COMMCONFIG& config); //Misc RS232 Methods void ClearBreak(); void SetBreak(); void ClearError(DWORD& dwErrors); void GetStatus(COMSTAT& stat); void GetState(DCB& dcb); void SetState(DCB& dcb); void Escape(DWORD dwFunc); void ClearDTR(); void ClearRTS(); void SetDTR(); void SetRTS(); void SetXOFF(); void SetXON(); void GetProperties(COMMPROP& properties); void GetModemStatus(DWORD& dwModemStatus); //Timeouts void SetTimeouts(COMMTIMEOUTS& timeouts); void GetTimeouts(COMMTIMEOUTS& timeouts); void Set0Timeout(); void Set0WriteTimeout(); void Set0ReadTimeout(); //Event Methods void SetMask(DWORD dwMask); void GetMask(DWORD& dwMask); void WaitEvent(DWORD& dwMask); void WaitEvent(DWORD& dwMask, OVERLAPPED& overlapped); //Queue Methods void Flush(); void Purge(DWORD dwFlags); void TerminateOutstandingWrites(); void TerminateOutstandingReads(); void ClearWriteBuffer(); void ClearReadBuffer(); void Setup(DWORD dwInQueue, DWORD dwOutQueue); //Overridables virtual void OnCompletion(DWORD dwErrorCode, DWORD dwCount, LPOVERLAPPED lpOverlapped);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值