Перейти к содержанию
    

Ну константы как-то не предполагают знак

У вас не типизированные константы, а литералы. Предполагают.

Но я не говорю что проблема в этом.

Странно видеть в 2016 году WinAPI. милиард взяких либ для работы с портами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно видеть в 2016 году WinAPI. милиард взяких либ для работы с портами.

А Вам в голову не пришло, что сам факт существования "милиард взяких либ для работы с портами" свидетельствует только об их бесполезности. Была бы польза - была бы одна волшебная "либа". А пока есть только одна такая "либа" - WinAPI называется. Остальное графоманские надстройки над API.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вам в голову не пришло, что сам факт существования "милиард взяких либ для работы с портами" свидетельствует только об их бесполезности. Была бы польза - была бы одна волшебная "либа". А пока есть только одна такая "либа" - WinAPI называется. Остальное графоманские надстройки над API.

Каждый волен находить свой баланс между скоростью разработки и получением удовольствия от ручного труда.

Никакой бесполезности в либах нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такая мысль, что (GENERIC_READ + GENERIC_WRITE) в вашем случае оказывается не равно (GENERIC_READ | GENERIC_WRITE).

 

мысль одобрямс.

Если макро содержит только один взведенный бит, то плюс == OR.

(нельзя допускать ошибок когда в списке на + ошибочно 2 раза указана одна и таже маска)

А вот если макро-маски "сборные" - то от плюсования лучше отказаться.

 

Раньше никогда не сталкивался с необходимостью осваивать WinAPI в части работы с COM-портами,

. . . .

Успешно открываю порт

. . . .
handle = kernel32.CreateFileA("\\\\.\\COM" .. comid, GENERIC_READ+GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0)

. . . .

end[/code]

. . . .

 

Не понял, какой комилятор и какой версии используете. И какой "target" компиляции (оконное, консольное итп)

 

Открытие порта в консольном Win32 приложении на чтение и запись

 

hport = CreateFile( /*(LPCWSTR)*/ cfg_com1, GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

 

cfg_com1 - символьный массив, содержащий строку с именем порта "COM1"

 

1. Обратите внимание на кодировку символов. Используйте ASCII однобайтные.

Для начала поотключайте в опциях проекта всякие юникоды и иже с ними.

из #include уберите <tchar.h>

2. Как Вам советовали - убрать (пока) OVERLAPPED

3. Посмотрите исходники множества библиотек классов для работы с COM-портами. Если класс "раздутый" - даже не смотрите.

исходник класса должен быть порядка 3 - 10 страниц исходника (из расчета 65 строк). Если у класса раздутая "родсловная" - найух его.

Родственные связи должны быть только на вызовы Win32API :)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо большое за ответы! дело оказалось действительно в знаке констант, это дебильная особенность той среды разработки, в которой пишу. В общем удается добиться желаемого при передаче констант с отрицательным знаком, создал такую вот константу GENERIC_READWRITE = -1073741824 и передаю ее в функцию. Конечно это не стандартно и попахивает колхозом, но работает, в дальнейшем подумаю как это все привести в нормальный вид. Зато теперь я с портами на "ты", ура, спасибо всем большое!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никакой бесполезности в либах нет.

Да сплошная польза. По этой часть любителей библиотек ищет библиотеки, а вторая часть почему они не работают, как мечтается. Ну конечно есть еще писатели библиотек, которые слегка в чем то разобравшись дарят миру плоды творчества. Причем надо понимать, что данные конкретные библиотеки есть просто обертки над действительно ПРОДУМАННЫМ системным интерфейсом.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в дальнейшем подумаю как это все привести в нормальный вид.

0x80000000u

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...