Подскажите разницу. Есть обычный внешний диалап-модем, подключенный к ComPort компьютера. Пытаюсь записать АТ команду в модем (Delphi XE) Есть 2 функции записи в компорт - строки и байта (приведены ниже). Если вызываю функцию записи строки (WriteString) - ничего не происходит, модем не реагирует, если пишу побайтово в порт через цикл с WriteChar - все работает. Как такое объяснить? Что приходит на ум - строка пишется в порт в виде юникода, хотя откуда юникод, если строка в функции приводится к pansichar
Подскажите, ибо 3 день бьюсь в догадках
| Код | const init1= 'ATZ'#13#10; init2= 'AT+VCID=1'#13#10; ........
function WriteChar(data: byte): integer; begin WriteBuf(data, 1); result := 1; end;
function WriteBuf(buffer: array of byte; len: integer): integer; var rea: cardinal; begin if (comhandle <> INVALID_HANDLE_VALUE) then WriteFile(comhandle, buffer, len, rea, nil); result := rea; end;
function WriteString(s: string): integer; var rea: cardinal; i: integer; begin if (comhandle <> INVALID_HANDLE_VALUE) then begin WriteFile(comhandle, PAnsiChar(s)^, length(s), rea, nil); exit(rea); end else exit(commerror); end;
|
|