장비제어하는 프로그램을 만드는데요
일단 장비로 들어가는 값은 헥사값을 입력받아야 작동이 됩니다.
제가 알고싶은건 그
1,헥사값을 어찌 구하는거며
2,그값을 어떻게 보내야되나요?소스로....
값을 받는건 어찌어찌 구현을 했는데 헥사값을 날리는 코딩을 도저히 모르겠네요
왠만하면 도움 안받고 자력으로 할려고 했으나 도저히 답이 안나올거 같아 염치 불구하고 이렇게 문의합니다.
어제밤부터 지금 이시간까지 이것가지고 삽질중입니다......조금만 더파면 암반수라도 나올듯...
요는
------------------------------------------------------------------------------------------------------------------------------------------------------
SEND버튼을 누르면 텍스트나 메모박스에 입력된 임의의 헥사값을 날리는 소스좀 짧게나마 부탁드립니다....
----------------------------------------------------------------------------------------------------------------------------------------------------
제발 ~~~~~~~절실합니다.....ㅜㅡㅜ
아래처럼 시작 및 끝을 체크하는 특정 아크값이 있는것도 있고(대부분)..
어떤 컴퍼넌트는 바이트가 아닌 스트링으로 처리할수 있는것도 있어요.
그런것들은 굳이 sDataArray 처럼 데이타를 가공하지 않고도
시작/메모장내용/끝 값만 보내면 됩니다.
요새..델파이로 밥먹기가 힘들어서 닷넷을 하는 바람에..
에러나도 잘 고치셔셔 응용을...;;
const
STARTOFPACKET = #1; //시작 프로토콜값
ENDOFPACKET = #127; //끝 프로토콜값
var
sDataArray : Array [0..1024] of Char;
sReadBuffer, sStrData : String;
i : integer;
begin
sStrData := Memo1.Lines[0];
sReadBuffer := '';
sDataArray[0] := STARTOFPACKET;
for i:=0 to Memo1.lines.count-1 do
begin
sDataArray[Length(sDataArray)] := CRC_Data( Memo1.lines[i] );
end;
sDataArray[Length(sDataArray)] := ENDOFPACKET;
Comm32.Write( sDataArray, Length(sDataArray) );
end;
//============ 송신할 Data
function CRC_Data( SendStr : String ) : Char;
var
i : integer;
sReturn : Char;
begin
for i:=0 to Length(SendStr)-1 do
begin
sReturn := Chr( Ord(SendStr[i]) );
end;
Result := sReturn;
end;