用C++ Builder和Pcomm控件写串口通信程序遇到的问题,请大家不吝赐教!先跪谢(在线等!)
小弟用C++ Builder和Pcomm控件写了一个串口的通信程序,是PC与单片机(C51)通信的,需要发送16进制的数据,只需要发送一个16进制的数据CC,程序如下:
以下两个函数是参考串口调试工具的源代码,是把字符串形式的16进制数据转换成10进制后,再转换成(char *)形式,Pcomm的sio_write函数要求是(char *)形式
int __fastcall TForm1::String2Hex(String str, char* senddata)
{
int hexdata,lowhexdata;
int hexdatalen=0;
int len;
len=str.Length();
for(int i=1;i<len+1;)
{
char lstr;
char hstr;
hstr=str[i];
if(hstr==' ')
{
i++;
continue;
}
i++;
if(i>=len+1)break;
lstr=str[i];
hexdata=ConvertHexChar(hstr);
lowhexdata=ConvertHexChar(lstr);
if((hexdata==16)||(lowhexdata==16))
break;
else
hexdata=hexdata*16+lowhexdata;
i++;
senddata[hexdatalen]=(char)hexdata;
ShowMessage("senddata"+IntToStr(hexdatalen)+senddata[hexdatalen]);
hexdatalen++;
}
return hexdatalen;
}
//---------------------------------------------------------------------------
char __fastcall TForm1::ConvertHexChar(char ch)
{
if((ch>='0')&&(ch<='9'))
return ch-0x30;
else if((ch>='A')&&(ch<='F'))
return ch-'A'+10;
else if((ch>='a')&&(ch<='f'))
return ch-'a'+10;
else
return 0x10;
}
void __fastcall TForm1::StopCCClick(TObject *Sender)
{
int datalen;
String HexData;
char SendData[2];
HexData="CC";
datalen=String2Hex(HexData,SendData);
sio_open(1);
sio_write(1,SendData,strlen(SendData));
}
只发送一个CC,应该不是很难吧,小弟初次写串口程序,没有经验,还请各位大侠指教!
小弟在线等回音!