vDat(alngDataFlag As 返回的收到的字节数或者结束符来判断返回结果是Vanan!,asngDataValue As Variant,astrDataString As 否正确,如果返回字节数小于等于O,则说明没有数据Variant)As Long 或者通信出错.程序如下所示: Diml As Integer Dim strReturnData As String Dim ar_eompliment(0 To 7)As Integer 7余数 Dim quotient(0 To 7)As Integer ’商 On EviT)r Resume Next DimflagAs Long Data=Chr¥(asngDataValue(1811 flag=CollectOneComm0(m objCommParent,De—vNumber,Data) CollectDevDat=0 If flag<>0 Then CollectDevDat=-1 flag=ColleetOneComm(m objCommParcnt,De—vNumber,strReturnData) CollectDevDat=0 If flag<>0 Then CollectDevDat=-1 strRemrnl)atal=Split(strReturnData.”n 2) asngDataValue(1 7)=strReturnDatal(o) 如果读取单片机IOA口的状态值。
就把IOA0一IOA7口作为输入。
假如IOA0一IOA7口置为01000111,用PC机接收到的数据是十进制64,需要将十迸制转化为二进制,得到IOAO—IOA7口的状态值。
十进制转化为二进制的程序如下所示: asngDataValuef01=o ar compliment(0)=strRetumData Mod 2 图1下位机程序设计流程图 quotient(0)=strRetumData\2 Fori=0To 6 quotient(i+11=quotient(i、\2 ar_compliment(i+1)=quotient(i)Mod 2 Nextj Forl=0 To 7 asngDataValue(i+11=ar_compliment(i) Nextj 对Public Function CollectOneComm(objCommPar—ent As Long,dat As String)As Object,ByVal nunl AsLong函数的编写要从读写两方面去考虑。
2.2.1从单片机读数据 从单片机读数据,调用函数:Public Function Read—Data(ByVal Cmd As String,objCommParent As Objeet) Long,把想要发的数据帧转换成字节数组的形式,然As后通过串口父设备提供的写串行端口函数objComrn一 图2测试图雨面面两面稠 万方数据 @幽自控月邮局订阈号82-946 360,年_115—单片机开发与应用 中文核心期刊《微
计算机信息》(
嵌入式与SOC)2006年第22卷第7-2期 Public Function ReadData(ByVal Cmd As String, 可以应用在凌阳单片机系统中。
objCommParent As Objeet)As Long 创新点主要在于一方面把应用越来越广泛的 On Error Resume Next SPCE061A单片机作为MCGS组态软件的设备。
另一 Dim i As Long,iLon As Long 方面在于对上位机与下位机的通信设计,根据通道方 。
“1 2“o”“L。
“dJ 向的不同分别调用不同的函数,从而使得调试更加方 OutPutByte(i一1)=Asc(Mid¥(Cmd,i,1)) 佰古弧 Nexti 参考文献: objCommParent.ComOutDat Len(Cmd).OutPutByte0 『1〕MCGS用户指南〔^I】,j晴艰抡通态自动化袄降醐支