реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> WinAPI - Serial communications, COM-порт по трем проводам
jorikdima
сообщение Dec 27 2016, 21:42
Сообщение #16


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(toweroff @ Dec 27 2016, 13:03) *
Ну константы как-то не предполагают знак

У вас не типизированные константы, а литералы. Предполагают.
Но я не говорю что проблема в этом.
Странно видеть в 2016 году WinAPI. милиард взяких либ для работы с портами.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 27 2016, 21:51
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(jorikdima @ Dec 27 2016, 23:42) *
Странно видеть в 2016 году WinAPI. милиард взяких либ для работы с портами.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Dec 28 2016, 01:42
Сообщение #18


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(zltigo @ Dec 27 2016, 13:51) *
А Вам в голову не пришло, что сам факт существования "милиард взяких либ для работы с портами" свидетельствует только об их бесполезности. Была бы польза - была бы одна волшебная "либа". А пока есть только одна такая "либа" - WinAPI называется. Остальное графоманские надстройки над API.

Каждый волен находить свой баланс между скоростью разработки и получением удовольствия от ручного труда.
Никакой бесполезности в либах нет.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Dec 28 2016, 07:34
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(aaarrr @ Dec 25 2016, 10:51) *
Есть такая мысль, что (GENERIC_READ + GENERIC_WRITE) в вашем случае оказывается не равно (GENERIC_READ | GENERIC_WRITE).


мысль одобрямс.
Если макро содержит только один взведенный бит, то плюс == OR.
(нельзя допускать ошибок когда в списке на + ошибочно 2 раза указана одна и таже маска)
А вот если макро-маски "сборные" - то от плюсования лучше отказаться.

Цитата(vazz @ Jan 6 2015, 16:31) *
Раньше никогда не сталкивался с необходимостью осваивать 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 sm.gif

Go to the top of the page
 
+Quote Post
vazz
сообщение Jan 12 2017, 18:14
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



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


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 12 2017, 20:35
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(jorikdima @ Dec 28 2016, 03:42) *
Никакой бесполезности в либах нет.

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



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Jan 13 2017, 02:54
Сообщение #22


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(vazz @ Jan 12 2017, 13:14) *
в дальнейшем подумаю как это все привести в нормальный вид.

0x80000000u
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016