vazzzzz
| Редактировать | Цитировать | Сообщить модератору Уважаемые знатоки, что-то туплю я.. Задача проста: мне нужно открыть существующий порт, бросить туда одну AT команду (модем подключен), считать ответ и закрыть порт. Сначала пытался прикрутить к проекту MSComm32.OCX. Прикрутить то получилось, вот только больше 16 портов он не обслуживает. Попытался найти внятный враппер для него, чтобы без ограничений по номеру порта - не нашел.. Плюнул я на MSComm (т.к. задача реально сводится к тому, чтобы отправить 1-2 команды и получить данные), решил попытаться через winapi реализовать с помощью CreateFile, WriteFile и т.д. С ходу не получилось, все закончилось на этапе открытия порта Код: Код: portHandle = DLL.CallFunction("C:\\Windows\\System32\\kernel32.dll", "CreateFileA", "\\\\.\\COM30,12,0,NULL,3,0,NULL", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); | Пробовал и так: Код: portHandle = DLL.CallFunction("C:\\Windows\\System32\\kernel32.dll", "CreateFileA", "\\\\.\\COM30,12,0,0,3,0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); | И так: Код: portHandle = DLL.CallFunction("C:\\Windows\\System32\\kernel32.dll", "CreateFileA", "\\\\.\\COM30,12,0,\0,3,0,\0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); | И так: Код: portHandle = DLL.CallFunction("C:\\Windows\\System32\\kernel32.dll", "CreateFileA", "\\\\.\\COM30,12,0,,3,0,", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); | В первых двух вариантах хэндл возвращается как "-1", вторые два вызывают ошибку приложения с принудительным закрытием. Что не так-то? Может в Win7 какие-то ограничения на работу с портами через api? Опыта не хватает |