新闻中心

EEPW首页>嵌入式系统>设计应用> 捷达汽车组合仪表的串行通讯的实现

捷达汽车组合仪表的串行通讯的实现

作者: 时间:2013-02-17 来源:网络 收藏

//检查接收的数据是否准备好,为1表示接收移位寄存器已收到一个完整的数据,并送到接收缓冲器中
if(intTemp>intWaitTime)
{Error();}
}
if(!blnBeyondWaitTime)
bytResult=InportB(intDRR);//intDRR=0x3f8
return bytResult;
}
VOld TForml∷subSendByte(byte bytSend)
{
byte bytTemp;
bytTemp=InportB(intLSR);
//检查发送缓冲器是否为空,1为空
while((bytTemp0x20)!=0x20)
bytTemp=InportB(intLSR);
OutportB(0x3F8,bytSend); //发送缓冲器为空
bytTemp=InportB(intLSR);
//检查发送移位寄存器是否为空,即发送缓冲器的数据是否送完
while((bytTemp0x40)!=0x40)
bytTemp=InportB(intLSR);
bytTemp=InportB(intLSR);
//检查接收的数据是否准备好,为1表示接收移位寄存器已收到一个完整的数据,并送到接收缓冲器中
while((bytTemp 0x1)!=0x1)
bytTemp=InportB(intLSR);
bytTemp=InportB(intDRR);
//清空接收缓冲区中的发送数据
}

在此基础上建立本通讯初始化的主函数,如清单2所示:

清单2:

void TForml∷InitRS232(void)
{
String strTemp;//Dim strTemp As String
byte bytTemp; //Dim bytTemp As Byte
int intTemp; //Dim intTemp As Integer
int i; //Dim I As Integer
//Stepl:
OutportB (intLCR,0x80);
//输出控制字,下面输出波特串
OutportB(intLSB,0x0); //低位
OutportB(intMSB,0x5A); //高位
OutportB(intLCR,0xA);
//5 bit,l起始位,1奇偶位和1停止位
OutportB(intIER,0); //抑制中断
strTemp="";
subSendByte (0x * *) //发送建立通讯密码
//Step2:
OutportB(intLCR,0x80);
//输出控制字,下面输出波特率
OutportB(intLSB,0xB);
OutportB(intMSB,0x0);
OutportB(intLCR,0x3);//10400,8,N
strTemp=strTemp+""+IntToHex(bytReceiveByte(),2);
//Step3:
Receive the Low byte Of Key Word
strTemp=strTemp+""+IntToHex(bytReceiveByte(),2);
//Step4:
Receive the High byte Of Key Word
bytTemp=bytReceiveByte();
strTemp=strTemp+""+IntToHex(bytTemp,2);
//Step5:

下面PC送高位字节的取反

if(! blnBeyondWaitTime)
subSendByte(byte(~bytTemp)); //byte
else
{Error();}
//Step 6 Receive the block data
if (! blnReceiveIDBlock(16)) //接收第1个ID块,为16B
{Error();}
if (! blnReceiveIDBlock(16)) //接收第2个ID块,为16B
{Error();}
if (! blnReceiveIDBlock(15)) //接收第3个ID块,为15B
{Error();}
if (! blnReceiveIDBlock(9)) //接收第4个ID块,为9B
{Error();}
//Cluster)> >PC
subReceiveTheFifthBlock();
String ResOfFT=strTestDataStream(strEnableFT);
//仪表Epprom可读写命令
if(ResOfFT==EmptyStr)
{Error();}
blnInitRS232=True;

4 结 语

本文采用C++Builder软件平台成功开发了仪表特殊串行口通讯程序,该系统在西门子VDO(芜湖)公司生产线投入使用一年多,与采用快速通讯方式相比通讯传输性能稳定,并具有了方便美观的用户界面,为实现仪表检测设备奠定了基础,具有重要的应用价值。(end)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭