?? enterdate.pas
字號:
unit EnterDate;
interface
uses Windows, SysUtils, Variants, Classes, Forms, StdCtrls, Controls;
type
TEnterDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
Text1: TEdit;
Label1: TLabel; //按下的按鈕序號
procedure OKBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
EnterDlg: TEnterDlg;
index : Integer=0; //按下的按鈕序號
Const DEMO_CH451_CMD= $56;
implementation
uses Ch375dll,unit1,Main ;
{$R *.dfm}
var
mNumber : Byte;
mBcdCode1:Byte;
mLength:cardinal;
mBcdCode:array[0..2] of Byte;
procedure TEnterDlg.OKBtnClick(Sender: TObject);
var
ilen:Integer;
mDemoReq:COMMAND_PACKET;
BtDisChar:pchar;
begin
mEnterBuffer := Text1.Text;
If index <> -1 Then //數(shù)碼管對應(yīng)的按鍵
begin
If Text1.Text <> '' Then
begin
case mEnterBuffer[1] of
' ':mBcdCode1:=$10; // 空格
'=':mBcdCode1:=$13;
'.':mBcdCode1:=$1A
Else
mBcdCode1 := mCharToBcd(strtochar(strLeft(mEnterBuffer, 1))); //取輸入字符串中最左邊一位
END;
ilen := Length(mEnterBuffer);
If (ilen >= 2) And (strRight(strLeft(mEnterBuffer, 2), 1) = '.') Then mBcdCode1 := (mBcdCode1 Or $80);
If mBcdCode1 <> $FF Then //輸入的字符有效
begin
mNumber := index; // 如果Bt1至Bt8有序,則結(jié)果為0-7,分別對應(yīng)于各個數(shù)碼管按鈕
mNumber := 7 - mNumber;
mDemoReq.mCommandCode := DEMO_CH451_CMD;
mDemoReq.mCommandCodeNot := $FF - DEMO_CH451_CMD;
mDemoReq.mParameter[2] := ($8 Or mNumber); // CH451命令:加載字?jǐn)?shù)據(jù)到指定數(shù)碼管
mDemoReq.mParameter[1] := mBcdCode1; //字?jǐn)?shù)據(jù),對應(yīng)于BCD譯碼方式
mLength := CONST_CMD_LEN; // 命令包的長度
////On Error Resume Next
If CH375WriteData(mIndex, @mDemoReq, @mLength) Then // 通過CH371發(fā)送數(shù)據(jù),成功
// 如果輸入時mLength大于8,則成功返回時,為了更加可靠,可以檢查實(shí)際發(fā)送的長度是否符合
begin
//mEnterBuffer[2] := '0'; // 字符串結(jié)束符,只要一個字符
//frmMain.Command1(index).Caption = Left(mEnterBuffer, 1) //設(shè)置按鈕上的字符
Btdischar:=AnsiStrUpper(pchar(copy(mEnterBuffer,1,1)));
SetDlgItemText( frmmain.Handle , GetDisBtHwnd(index),Btdischar);
end
Else
application.MessageBox('CH375WriteData 失敗!','信息提示',Mb_ok+MB_ICONEXCLAMATION);
END
Else
application.MessageBox('請輸入字符0-9,A-F或者空格','信息提示',Mb_ok+MB_ICONEXCLAMATION);
END
Else
application.MessageBox('請輸入字符0-9,A-F或者空格','信息提示',Mb_ok+MB_ICONEXCLAMATION);
//index := 0;
EXIT; //退出當(dāng)前窗體
end
Else
begin
if index=-1 then //命令按鈕觸發(fā)
begin
If (Length(mEnterBuffer) >= 3) Then // 已經(jīng)輸入數(shù)據(jù),并且長度超過3位
begin
mBcdCode[0] := mCharToBcd(strtochar(strLeft(mEnterBuffer, 1)));
mBcdCode[1] := mCharToBcd(strtochar(strRight(strLeft(mEnterBuffer, 2), 1)));
mBcdCode[2] := mCharToBcd(strtochar(strRight(strLeft(mEnterBuffer, 3), 1)));
If (mBcdCode[0] <> $FF) And (mBcdCode[1] <> $FF) And (mBcdCode[2] <> $FF) Then // 輸入的三個字符都有效
begin
mDemoReq.mCommandCode := DEMO_CH451_CMD;
mDemoReq.mCommandCodeNot := $FF - DEMO_CH451_CMD;
mDemoReq.mParameter[2] := mBcdCode[0]; //CH451命令:高4位
mDemoReq.mParameter[1] := mBcdCode[1] * $10 Or mBcdCode[2]; // 低8位的字節(jié)數(shù)據(jù)
mLength := CONST_CMD_LEN; // 命令包的長度
If CH375WriteData(mIndex, @mDemoReq, @mLength) Then // 通過CH375發(fā)送數(shù)據(jù),成功
application.MessageBox('命成功發(fā)送到CH451', '信息提示',Mb_ok+MB_ICONEXCLAMATION)
Else
application.MessageBox('CH375WriteData 失敗','信息提示',Mb_ok+MB_ICONEXCLAMATION);
end
Else
application.MessageBox('請輸入3個字符0-9,A-F','信息提示',Mb_ok+MB_ICONEXCLAMATION);
end
Else
begin
application.MessageBox('請至少輸入3個字符0-9,A-F','信息提示',Mb_ok+MB_ICONEXCLAMATION);
end;
end;
end;
end;
procedure TEnterDlg.CancelBtnClick(Sender: TObject);
begin
mEnterBuffer := '' ; //放棄按鈕
exit;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -