Ще кажа аз, че изобщо не се прави така...
Първо искам да ти кажа, че в описанието на протокола на фп550 е написано МНОГО ЯСНО как се форматира пакет за тоя принтер. Ама много точно и не двусмислено е написано какво е команда:
...
<CMD> Код на командата
дължина: 1 байт
стойност: 20H - 7FH
...
Само че ти не си го прочел.
Второ искам да ти кажа, че ако не знаеш какво е "3Dh" по добре изобщо не се захващай с тая работа. Много ама мноооого имаш още да четеш (и то основни неща).
3Dh значи числото 3D в hex от където идва и това "h" което на делфи е $3D което пък = 61 dec (десетично). Освен това вземи си прочети хелпа за да видиш че освен DатеТоStr има още бая функции за форматиране на TDateTime в стринг (като например FormatDateTime) а недей да пишеш такъв "гениален" код.
Трето, сигурен съм че като си "чел" описанието изобщо не си обърнал внимание на:
<01><LEN><SEQ><CMD><DATA><05><BCC><03>
...е тоя ред където ти е НАПИСАНО просто и ясно какво представлява един пакет към принтера. Явно ти се е видяло сложно.
...
const
PREAMBLE = #$01;
NAK = #$15;
SYN = #$16;
POSTAMBLE = #$05;
SEPARATOR = #$04;
TERMINATOR = #$03;
pcmdSET_DATETIME = $3D; // (61)
var
SEQ:Byte;
function CalcBCC(s: string): String;
var
i:integer;
BCC:WORD;
begin
BCC:=0;
for i:=1 to Length(s) do
BCC:=BCC+ord(s[ i ]);
result:=chr($30+hibyte(BCC) shr 4)+chr($30+hibyte(BCC) and $0F)+chr($30+lobyte(BCC) shr 4)+chr($30+lobyte(BCC) and $0F);
end;
function FormatPacket(CMD:byte;const Data:String):string;
begin
result:=chr($24+Length(Data))+chr(SEQ)+chr(CMD)+Data+POSTAMBLE;
result:=PREAMBLE+result+CalcBCC(result)+TERMINATOR;
end;
...
COMPort.Send(FormatPacket(pcmdSET_DATETIME,FormatDateTime('dd-mm-yy hh:nn:ss',Now));
и т.н и т.н...
Мога да ти дам всичко на готово, но до колкото разбрах идеята беше да се заформи някаква дискусия по въпроса (с образователна цел).
Един съвет: Като четеш и срешнеш нещо което не разбираш (от типа на 3Dh) първо научи както значи и тогава продължавай надолу.
П.П. Това му е лошото на разглезения програмист на Делфи и на другите среди тип "графичен редактор". Като срешне задача от типа "Комуникация с фискален принтер" веднага търси компонент който да му реши проблема.Да ама не.