预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

现有电子秤一台,使用串口与计算机进行通讯。编写VB程序来访问串口,达到读取电子秤上显示的数据。该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。所有字符 现有电子秤一台,使用串口与计算机进行通讯。编写VB程序来访问串口,达到读取电子秤上显示的数据。该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。所有字符均发送11位ASCII码,一个起始位。在VB中与串口通讯需要引入控件MSComm串口通讯控件(在MicrosoftCommControl6.0中)。具体程序如下:控件简称:MSC DimOut(12)AsByte'接收var中的值 DimvarAsVariant'接收MSC.input中的数值 DimnReceAsInteger'计算MSC.inputbuffer的个数 DimiAsInteger,jAsInteger'随即变量,计算循环 **************************************************************************** PrivateSubForm_Load() ClearText WithMSC .CommPort=1'设置Com1为通信端口 .Settings="9600,E,7,2"'设置通信端口参数9600赫兹、偶校验、7个数据位、2个停止位.(这里需要进一步说明的是:.Setting=”BBBB,P,D,S”。 含义是:B:BaudRate(波特率);P:Parity(奇偶);D:DataBit;S:StopBit) .InBufferSize=40'设置缓冲区接收数据为40字节 .InputLen=1'设置Input一次从接收缓冲读取字节数为1 .RThreshold=1'设置接收一个字节就产生OnComm事件 EndWith EndSub **************************************************************************** PrivateSubClearText() Text3.Text="" Text2.Text="5" Text1.Text="" EndSub PrivateSubCommand1_Click() ClearText 'nRece=0'计数器清零 WithMSC .InputMode=comInputModeBinary'设置数据接收模式为二进制形式 .InBufferCount=0'清除接收缓冲区 IfNot.PortOpenThen .PortOpen=True'打开通信端口 EndIf EndWith EndSub PrivateSubMSC_OnComm() DelayTime‘用来延续时间 ClearText WithMSC SelectCase.CommEvent'判断通信事件 CasecomEvReceive:'收到Rthreshold个字节产生的接收事件 SwichVar1 IfOut(1)=2Then'判断是否为数据的开始标志 .RThreshold=0'关闭OnComm事件接收 EndIf Do DoEvents LoopUntil.InBufferCount>=3'循环等待接收缓冲区>=3个字节 'nRece=nRece+1 Fori=2To12 SwichVari Text1.Text=Text1.Text&Chr(Out(i)) Next Text1.Text=LTrim(Text1.Text) Text2.Text=Text2.Text&CStr(nRece) .RThreshold=1'打开MSComm事件接收 CaseElse '.PortOpen=False EndSelect EndWith EndSub **************************************************************************** PrivateSubDelayTime() DimbDTAsBoolean DimsPreviousAsSingle,sLastAsSingle bDT=True sPrevious=Timer(Timer可以计算从子夜到现在所经过的秒数,在MicrosoftWindows中,Timer函数可以返回一秒的小数部分) DoWhilebDT IfTimer-sPrevious>=0.3ThenbDT=False Loop bDT=True EndSub (通信传输速率为9600bps,则最快速度1.04ms发送一个字节,仪表每秒发送50帧数据,每