Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

И снова про 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.067 c
2-1163497639
new1
2006-11-14 12:47
2006.12.03
проблема в создании dbf-файла


15-1163183082
ArtemESC
2006-11-10 21:24
2006.12.03
Технология баннированя IP-адресов...


15-1163270446
Cyrax spectre
2006-11-11 21:40
2006.12.03
Имею ли я право на реабилитацию или УДО ?


6-1152708209
bobah
2006-07-12 16:43
2006.12.03
Как лучше реализовывать архитектуру клиент-сервер


15-1163094529
yuraspb
2006-11-09 20:48
2006.12.03
У кого есть исходники по кластерному анализу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский