使用MsComm控件接收二进制文件,长度总是为0
以前用MsComm都是文本模式,数据的发送接收正常。现在用二进制模式通讯发送正常,但接收不到数据,串口自发自收都不行
串口属性设置:
axMSComm1.RThreshold = 1;
axMSComm1.SThreshold=0;
axMSComm1.Settings = "2400, E, 8, 1";
axMSComm1.Handshaking = MSCommLib.HandshakeConstants.comNone;
axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;
axMSComm1.InputLen = 0;
axMSComm1.NullDiscard = false;
接收代码:
private void axMSComm1_OnComm(object sender, System.EventArgs e)
{
if (axMSComm1.CommEvent == 2)
{
byte[] buff;
buff = (byte[])axMSComm1.Input;
}
}
在buff处设置了断点,事件能触发说明收到数据,但是buff的长度始终为0,没有数据
后来我每次发送一个字节,并将axMSComm1.RThreshold设为3,只有发送到第3个字节时串口接收事件才触发,这样就确定串口已经接收到数据,但是buff = (byte[])axMSComm1.Input;这句代码总是取不到数据。
实在是没头绪了,请高手指点一下!!!
串口属性设置:
axMSComm1.RThreshold = 1;
axMSComm1.SThreshold=0;
axMSComm1.Settings = "2400, E, 8, 1";
axMSComm1.Handshaking = MSCommLib.HandshakeConstants.comNone;
axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;
axMSComm1.InputLen = 0;
axMSComm1.NullDiscard = false;
接收代码:
private void axMSComm1_OnComm(object sender, System.EventArgs e)
{
if (axMSComm1.CommEvent == 2)
{
byte[] buff;
buff = (byte[])axMSComm1.Input;
}
}
在buff处设置了断点,事件能触发说明收到数据,但是buff的长度始终为0,没有数据
后来我每次发送一个字节,并将axMSComm1.RThreshold设为3,只有发送到第3个字节时串口接收事件才触发,这样就确定串口已经接收到数据,但是buff = (byte[])axMSComm1.Input;这句代码总是取不到数据。
实在是没头绪了,请高手指点一下!!!
...全文
相关推荐
在Delphi中使用串口控件MSComm的0字符接收例程祥解
本文将详细讲解如何在 Delphi 中使用 MSComm 控件处理包含 0 字符(ASCII 0,也称为 NULL 字符)的接收例程。首先,配置 MSComm 控件的参数至关重要。
VC6.0 MFC MSComm串口控件详解
VC6.0 MFC MSComm串口控件详解MSComm控件是Microsoft Communications Control(简称MSComm),是一个由Microsoft公司提供的ActiveX控件
图解VC++6.0中使用mscomm串口控件
### 图解VC++6.0中使用mscomm串口控件#### 一、简介在探讨如何在VC++6.0中使用mscomm串口控件之前,我们需要先了解几个基本概念。
VB中MScomm控件通信方式的使用
### VB中MScomm控件通信方式的使用#### 引言在Visual Basic(简称VB)编程环境中,实现串口通信的功能通常会采用内置的MScomm控件。
VB控件Mscomm控件与PLC进行RS485(Modbus)通讯源码
本文将详细介绍如何使用Visual Basic (VB)中的Mscomm控件实现与PLC的RS485(Modbus)通讯,并深入分析给出的源码片段。#### 1.


