roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 00:04

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 12 авг 2009, 19:36 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Я сегодня разобрался с тем, как работать с комом под винду.

http://hg.vehq.ru/liborfa/file/902a1ce5 ... rial_win.c

// Дед я отладил, теперь и под линь, и под вин. Нет внешних зависимостей, ну только libc/kernel32.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 12 авг 2009, 21:39 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
О, сразу поставил dcb.fNull = false, эт правильно :) Я когда-то с одним подлым программатором намучился, кажется это была филипсовская ISP-утилита для LPC2xxx. Берет и ставит этот бит в конфиге порта, и не снимает :). А я ленивый - сделал GetCommState, скорость да 8N1 выставил и общаюсь. И удивляюсь почему ни с того, ни с сего кто-то грызть пакеты начинает, некоторые байты не доходят... Потом уже наковырял что не доходят именно нулевые байты и почему это происходит. Короче после этого вызов GetCommState убрал, всю структуру заполнял сам и вызывал SetCommState.

Вообще прога была написана на скорую руку, куски на делфи, куски на сях, так что выкладывать ее тут наверное нету смысла (прога - мастер протокола ModBus-RTU, позволяет через переходник RS232-RS485 читать и писать регистры слейвов, хотя и не все). Ну и типа она моему бывшему работодателю принадлежит... :oops:

Да, а нафиг тебе GetCommConfig - вообще не понял, объявил бы DCB dcb; и работал с ним. Для примера все же выложу свою инициализацию:
Код:
        memset(&dcb, 0, sizeof(DCB));
        dcb.DCBlength=sizeof(DCB);
       
        dcb.fBinary=1;
//        dcb.fParity=0;
//        dcb.fOutxCtsFlow=0;
//        dcb.fOutxDsrFlow=0;
        dcb.fDtrControl = 0; // +power
//        dcb.fDsrSensitivity=0;
//        dcb.fTXContinueOnXoff=0;
//        dcb.fOutX=0;
//        dcb.fInX=0;
//        dcb.fErrorChar=0;
        dcb.fRtsControl = 1; // -power
//      dcb.fNull=0;
//      dcb.fAbortOnError=0;

        dcb.ByteSize=8;
        dcb.Parity=NOPARITY;
        dcb.StopBits=TWOSTOPBITS;
        dcb.BaudRate=BaudRate;

        if (!SetCommState(h,&dcb)) {
          CloseHandle(h);
          return FALSE;
        }

+-power - это у нас схема опторазвязки переходника от этих ног питалась, поэтому такие нестандартные значения. Надо кажется обе единицы ставить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 13 авг 2009, 00:17 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Переделал, но пока не проверял.
А поро правильно или нет понятия не имею :oops: разбираться в винапи не хочу.
Посмотрел QtExtSerialPort. Не завелось. Посмотрел avrdude. Поправил. Завелось. :)

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 27 сен 2009, 14:21 
Не в сети
Аватара пользователя

Зарегистрирован: 07 сен 2009, 20:06
Сообщения: 333
прог. языки: c, c#
ФИО: Евгений
Народ, а вы http://pcports.ru/ смотрели?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 27 сен 2009, 14:22 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Смотрели.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 24 окт 2009, 00:57 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2008, 17:47
Сообщения: 97
Откуда: казань, респ. Татарстан, россия
прог. языки: c++, c#, asm
Vooon писал(а):
Я сегодня разобрался с тем, как работать с комом под винду.

http://hg.vehq.ru/liborfa/file/902a1ce5 ... rial_win.c

// Дед я отладил, теперь и под линь, и под вин. Нет внешних зависимостей, ну только libc/kernel32.


а это в какой среде? Просто подключаемые заголовочные файлы (serial.h, а затем и другие заголовочные файлы которые подключаются в serial.h .. что то нет таких в Visual Studio 2008) их как бы надо отдельно скачивать и подключать каждую отдельно чтоли?

как быть?! ... :(

_________________
“Но мы же еще ​живы, чувак, это же круто…”


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 24 окт 2009, 01:09 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
А если посмотреть каталог? http://hg.vehq.ru/liborfa/file/tip/lib/

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 24 окт 2009, 19:25 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2008, 17:47
Сообщения: 97
Откуда: казань, респ. Татарстан, россия
прог. языки: c++, c#, asm
Оу) Пардон. :pardon:
....
Что то нумерация строк в кодах ..ээ.. мешает сделать копипаст))
...
зашита от копипастеров?

_________________
“Но мы же еще ​живы, чувак, это же круто…”


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 24 окт 2009, 21:02 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Разуй глаза! Там есть и ссылочки на архивы(tar.gz/zip/tar.bz2) и на скачивание файла(raw)!

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 26 окт 2009, 23:55 
Не в сети
Аватара пользователя

Зарегистрирован: 04 окт 2008, 17:47
Сообщения: 97
Откуда: казань, респ. Татарстан, россия
прог. языки: c++, c#, asm
Vooon :pardon: блин все равно не прет :( На заголовочные файлы 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. Сначала надо сконфигурировать СОМ порт выборать скорости стопбиты и т.п, для этого надо сделать то-то то-то.

А потом в вики эту статью, чтоб больше вопрос не возникал. спасибо

_________________
“Но мы же еще ​живы, чувак, это же круто…”


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 27 окт 2009, 00:49 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Какие нафиг классы!? Там чистый Си.
Я понятия не имею насколько MSVC совместим с C99, т.к. заголовочники из стандартной библиотеки.
Почему он их не находит понятия не имею.
В serial.h определено 4-е функции. В serial_{posix,win}.c реализация для разных платформ.

Код:
HANDLE open_and_configure(char *port, int baudrate)
posix_close(HANDLE)
posix_read(HANDLE, char *buf, int count)
posix_write(HANDLE, char *buf, int count)

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 27 окт 2009, 02:02 
Не в сети
Аватара пользователя

Зарегистрирован: 21 мар 2009, 20:06
Сообщения: 395
Откуда: Город на Неве
прог. языки: GNU C++ with Qt / C# via .NET
ФИО: Александр
MSVC по умолчанию не совместим с С99, поэтому и требуются эти заголовочники...

Двумя из трех могу поделиться... А вот stdbool.h - у мя нет...

И собственно, в догонку...
Весь файл stdbool.h представляет из себя:
Код:
/* 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

#endif  /* stdbool.h */


То есть, вместо инклуда, можешь просто написать
Код:
#define _Bool   bool

И под MSVC оно у тебя должно пойти.


Вложения:
stdint.h [7.35 КиБ]
Скачиваний: 606
inttypes.h [8.11 КиБ]
Скачиваний: 577
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 27 окт 2009, 05:52 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
almazkazan, а msdn`ом пользоваться религия не позволяет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 03 ноя 2009, 01:30 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
Вопрос по терминалам
как отправлять числа ?
не символы АСКИИ а именно числа
при попытки тупо набрать число 180 + ентер отправляет 3 байта в место одного :o


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.
СообщениеДобавлено: 03 ноя 2009, 09:56 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
искать символ соответствующий числу 180 )) или юзать\писать софтинку которая умеет конвертить ...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO