Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

И снова про USB-COM и проблемы с ним...   Найти похожие ветки 

 
GL00m   (2006-07-18 00:34) [0]

Вкратце: есть сотовый модем, цепляется на COM-порт, в системе не хватает портов, поэтому взял обычный переходник USB->COM. Читал в форуме, что проблем много и что не все режимы поддерживаются, но... Долбаный hyperterminal виндовый работает, а когда я пытаюсь сделать
ComPortHandle := CreateFile(PAnsiChar(ComPortName),
                               GENERIC_READ or GENERIC_WRITE,
                               0,
                               nil,
                               OPEN_EXISTING,
                               FILE_ATTRIBUTE_NORMAL,
                               0);

где ComPortName = "COM15", то я получаю инвалидный хэндл с ГетЛастЕррором: The system cannot find the file specified.
Я бы может и промолчал бы, но Гипертерминал-то пашет и все с ним работает. Может подскажете, где я лох (не считая того, что пользуюсь этим переходником =))?


 
GL00m   (2006-07-18 01:26) [1]

Вот, извиняюсь, <плохое слово>!.. Проблему решил почитав MSDN из интернета, а не с диска. Цитата:
To specify a COM port number greater than 9, use the following syntax: "\\\\.\\COM10". This syntax works for all port numbers and hardware that allows COM port numbers to be specified.
Такого я раньше не видел, решение проблемы, соответственно, оказалось простым:
if Length(ComPortName) > 4 then ComPortName := "\\.\" + ComPortName;
Может кому-то это пригодиться.


 
GL00m   (2006-07-18 01:27) [2]

Пардон, ошибка - не "пригодиться", а "пригодится".


 
artem1987   (2006-07-18 17:29) [3]

var
SA : SECURITY_ATTRIBUTES;
s : string;
h : THandle;
begin
// формирование SA
SA.nLength:= SizeOf(SECURITY_ATTRIBUTES);
SA.lpSecurityDescriptor:= nil;
SA.bInheritHandle:= False;
...
s:=Format("\\.\%s:",[s[i]]);
h:= CreateFile(PChar(@s[1]),GENERIC_READ or GENERIC_WRITE,
                       FILE_SHARE_READ or FILE_SHARE_WRITE, @SA, OPEN_EXISTING, 0, 0);
...
end;


 
StriderMan ©   (2006-07-18 18:55) [4]

прочитайте внимательно

use the following syntax: "\\\\.\\COM10". This syntax works
for all port numbers and hardware that allows COM port numbers
to be specified.

...и скажите зачем делать такие проверки

> if Length(ComPortName) > 4 then ComPortName := "\\.\" +
> ComPortName;


 
GL00m   (2006-07-19 23:02) [5]

Тогда я извиняюсь, мне, наверно, уже тогда в "начинающие"... Я просто не совсем понимаю, зачем "\\.\", ведь без этого не работает, а если номер меньше 10, то работает. Т.е. я просто пишу CreateFile(PAnsiChar("COM1"), GENERIC_READ итд итп и все работает, а если то же самое, но "COM15", то фигу. Расскажите, если не сложно? =(


 
GL00m   (2006-07-19 23:51) [6]

Да... Раза с десятого я допер, что написано именно
for all port numbers
Короче, пихать эти непонятные слэши с точкой ко всем названием и будет мне счастье. Но все-таки интересно, что значит этот набор символов??? =)


 
GL00m   (2006-07-19 23:57) [7]

to artem1987
А насколько это необходимо, прописывать SECURITY_ATTRIBUTES в данном случае?
FILE_SHARE_READ и WRITE мне не нужны из-за целей программы.


 
Rouse_ ©   (2006-07-20 12:21) [8]

Этот набор символов является именем устройства на локальной машине... (ибо точка)


 
Anatoly Podgoretsky ©   (2006-07-23 13:41) [9]

GL00m   (19.07.06 23:02) [5]
Тогда я извиняюсь, мне, наверно, уже тогда в "начинающие"... Я просто не совсем понимаю, зачем "\\.\", ведь без этого не работает, а если номер меньше 10, то работает. Т.е. я просто пишу CreateFile(PAnsiChar("COM1"), GENERIC_READ итд итп и все работает, а если то же самое, но "COM15", то фигу. Расскажите, если не сложно? =(

Это означает доступ к физическому устройству, устройства 1-9 предопределенные с времен ДОС и поэтому указание \\.\ не является обязательным. Это относится не только к СОМ портам.


 
GL00m   (2006-07-26 00:40) [10]

Спасибо, вроде дошло.



Страницы: 1 вся ветка

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
15-1163142284
Slider007
2006-11-10 10:04
2006.12.03
Вопрос по Wi Fi


2-1163613056
nordic3
2006-11-15 20:50
2006.12.03
Значок пи


2-1163158594
Kolan
2006-11-10 14:36
2006.12.03
Как заставить DBGrid выравнивать ячейки по тексту.


15-1163706694
vasIzmax
2006-11-16 22:51
2006.12.03
Работа с заголовком


15-1163344973
G13MO
2006-11-12 18:22
2006.12.03
Можно ли раскомпилировать .exe файл c помощью Delphi 7