О, сразу поставил dcb.fNull = false, эт правильно Я когда-то с одним подлым программатором намучился, кажется это была филипсовская ISP-утилита для LPC2xxx. Берет и ставит этот бит в конфиге порта, и не снимает . А я ленивый - сделал GetCommState, скорость да 8N1 выставил и общаюсь. И удивляюсь почему ни с того, ни с сего кто-то грызть пакеты начинает, некоторые байты не доходят... Потом уже наковырял что не доходят именно нулевые байты и почему это происходит. Короче после этого вызов GetCommState убрал, всю структуру заполнял сам и вызывал SetCommState.
Вообще прога была написана на скорую руку, куски на делфи, куски на сях, так что выкладывать ее тут наверное нету смысла (прога - мастер протокола ModBus-RTU, позволяет через переходник RS232-RS485 читать и писать регистры слейвов, хотя и не все). Ну и типа она моему бывшему работодателю принадлежит...
Да, а нафиг тебе GetCommConfig - вообще не понял, объявил бы DCB dcb; и работал с ним. Для примера все же выложу свою инициализацию:
Переделал, но пока не проверял. А поро правильно или нет понятия не имею разбираться в винапи не хочу. Посмотрел QtExtSerialPort. Не завелось. Посмотрел avrdude. Поправил. Завелось.
// Дед я отладил, теперь и под линь, и под вин. Нет внешних зависимостей, ну только libc/kernel32.
а это в какой среде? Просто подключаемые заголовочные файлы (serial.h, а затем и другие заголовочные файлы которые подключаются в serial.h .. что то нет таких в Visual Studio 2008) их как бы надо отдельно скачивать и подключать каждую отдельно чтоли?
Vooon блин все равно не прет На заголовочные файлы stdint.h , stdbool.h, inttypes.h и т.п ругается - no such file or derictory. Visual studio 2008 стоит... Но даже если б нормально откомпилировалось, я б не понял как этот код использовать.
Хотя весь синтаксис С++ я знаю и с ООП знаком. Но разобраться все равно не могу. Может парни не поленитесь и опишите весь процесс на уровне
1. скачиваем VISUAL STUDIO 2008. 2. скачиваем Архив с кодом. 3. Добавляем в проект такие то заголовочные файлы (.h) и такие то (.с) файлы 4. В 111.h описан класс, у него есть такие то такие то методы. 5. Сначала надо сконфигурировать СОМ порт выборать скорости стопбиты и т.п, для этого надо сделать то-то то-то.
А потом в вики эту статью, чтоб больше вопрос не возникал. спасибо
Какие нафиг классы!? Там чистый Си. Я понятия не имею насколько MSVC совместим с C99, т.к. заголовочники из стандартной библиотеки. Почему он их не находит понятия не имею. В serial.h определено 4-е функции. В serial_{posix,win}.c реализация для разных платформ.
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/* As a special exception, if you include this header file into source files compiled by GCC, this header file does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License. */
/* * ISO C Standard: 7.16 Boolean type and values <stdbool.h> */
#ifndef _STDBOOL_H #define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool #define true 1 #define false 0
#else /* __cplusplus */
/* Supporting <stdbool.h> in C++ is a GCC extension. */ #define _Bool bool #define bool bool #define false false #define true true
#endif /* __cplusplus */
/* Signal that all the definitions are present. */ #define __bool_true_false_are_defined 1
Вопрос по терминалам как отправлять числа ? не символы АСКИИ а именно числа при попытки тупо набрать число 180 + ентер отправляет 3 байта в место одного
искать символ соответствующий числу 180 )) или юзать\писать софтинку которая умеет конвертить ...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!» В этом мире меня подводит доброта и порядочность... "двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"