Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись строки в ComPort - как объяснить 
:(
    Опции темы
GrigoriyFomin
Дата 30.11.2012, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



Подскажите разницу. Есть обычный внешний диалап-модем, подключенный к 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;


PM MAIL   Вверх
Qu1nt
Дата 30.11.2012, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



Скорее всего:
Код

PAnsiChar(s)^ → AnsiString(s)[1]

PM MAIL   Вверх
GrigoriyFomin
Дата 30.11.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



такое применение вызова этой функции я взял на просторах инета - народ писал, что работает именно в таком варианте, правда я подозреваю, что все дело в юникоде
PM MAIL   Вверх
Qu1nt
Дата 30.11.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



Неужели не помогла замена?
PM MAIL   Вверх
GrigoriyFomin
Дата 1.12.2012, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



я уже проект запустил - менять пока смысла нет. Думал найти чисто академическое объяснение - на будущее. В чем загвоздка теоретическая. Думал, тут очевидный ляп
PM MAIL   Вверх
ZBugz
Дата 2.12.2012, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Цитата(GrigoriyFomin @ 30.11.2012,  14:38)
правда я подозреваю, что все дело в юникоде

99,9% это так
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1588 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.