Function JudgeHex(str_Data:string):Integer;
/////////////////////////////////////////
//功能 : 判断一个字符串是否为HEX字符串
//参数 : str_Data 要判断的字符串
//返回值 : 1 是HEX字符串
// -1 不是HEX字符串
/////////////////////////////////////////
Var
i:integer;
Begin
Result:=-1;
If Length(str_Data)=0 Then
Exit;
str_Data:=UpperCase(str_Data);
For i:=1 To Length(str_Data) Do
If (Not(Ord(str_Data[i]) In [48..57]))And(Not(Ord(str_Data[i]) In [65..70])) Then
Exit;
Result:=1
End;
/////////////////////////////////////////
//功能 : 判断一个字符串是否为HEX字符串
//参数 : str_Data 要判断的字符串
//返回值 : 1 是HEX字符串
// -1 不是HEX字符串
/////////////////////////////////////////
Var
i:integer;
Begin
Result:=-1;
If Length(str_Data)=0 Then
Exit;
str_Data:=UpperCase(str_Data);
For i:=1 To Length(str_Data) Do
If (Not(Ord(str_Data[i]) In [48..57]))And(Not(Ord(str_Data[i]) In [65..70])) Then
Exit;
Result:=1
End;
解决方案 »
- 哪位能提供BMP位图的无损压缩的算法或源代码
- SkinMagicBuilder无法读取smf文件
- 服务器端SQL语句执行问题?
- 小弟现在在做一个通讯录程序,不知道用什么数据库,XDM给个建议吧
- 广州讯通招聘VC/JAVA初级手
- 如何获得一个网段内所有联网的电脑的MAC
- 如何关掉我的dialog bar???
- 关于键盘的处理,高手帮帮忙,很急!应该这种程序很有意义,大家都会用到
- 请问如何重载operator =
- 100分!!!???????????vb组件返回的 ado 的 recordset,在VC中如何用 _RecordsetPtr 得到? 急!急!急!
- 急问!请问如何将自己的程序注册为Windows服务?在线等!
- 枚举整个本地网络所有计算机
var
i_StrLen,i:Integer;
Counter:Cardinal;
BytToSend:Byte;
begin
i_StrLen:=Length(str_Data) Div 2;
//发送数据
For i:=1 To i_StrLen Do
Begin
BytToSend:=Byte(StrToInt('$'+Copy(str_Data,(i-1)*2+1,2)));
Counter:=0;
If WriteFile(GetCommHandle(),BytToSend,1,Counter,Nil)=False Then
Begin
MessageBox(Application.Handle,'向串口发送数据失败!','错误信息',MB_OK+MB_ICONSTOP);
Exit
End;
End;
int Result = -1; //?
CString str_Data ; //?
if (str_Data.GetLength() == 0)
return; //or break; //?
str_Data.MakeUpper();
for (i = 0; i < str_Data.GetLength(); i++)
{
if (!((str_Data.GetAt(i) >= 48 && str_Data.GetAt(i) <= 57)
&& ((str_Data.GetAt(i) >= 65 && str_Data.GetAt(i) <= 70))))
return;
Result = 1;
}
------------------------
判断一个字符串是否是16进制形式?
#include "stdlib.h"int JudgeHex(char *str_Data)
{
int len = strlen(str_Data);
char c; for(int i=0; i<len; i++)
{
c = toupper(str_Data[i]); if(c>= '0' && c<='9')
{
continue;
} if(c>='A' && c<='F')
{
continue;
} return -1;
} return 1;
}
procedure 没有返回值
begin
.....
end
为代码段标记delphi和c++相似性很大的
打开串口,配置串口参数的部分也要实现.
If WriteFile(GetCommHandle(),BytToSend,1,Counter,Nil)=False Then
中的GetCommHandle()是用CreateFile打开串口返回的句柄.
翻译你那段通讯程序,涉及到打开串口,配置参数等问题,用到以下API函数,自己查查吧.
CreateFile 打开串口
SetupComm
SetCommState
PurgeComm
SetCommTimeouts
BytToSend:=Byte(StrToInt('$'+Copy(str_Data,(i-1)*2+1,2)));
int i;
BYTE ByteToSend;
DWORD Counter = 0;
BOOL bWriteStat = FALSE;
char temp[3] = {0};i_StrLen = strlen(str_Data) / 2;
for(i=0; i<i_StrLen; i++)
{
temp[0] = str_Data[i*2];
temp[1] = str_Data[i*2+1];
ByteToSend = atoi(temp); //如果转BCD码就自己转
bWriteStat = WriteFile(m_hComm, //串口句柄
ByteToSend,
1,
&Counter,
NULL);
if(!bWriteStat)
{
AfxMessageBox("向串口发送数据失败!");
}}