roboforum.ru

Технический форум по робототехнике.

COM-порт. Программирование на стороне ПК. Алгоритмы связи.

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

ALHIMIK » 03 ноя 2009, 11:27

спасибо
так и знал что всё нужно делать своими руками :D

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

Duhas » 03 ноя 2009, 12:05

хотя, у меня контроллер преобразует.. т.е. я в терминалке пишу s200s210 он поймет что это как s - скорость 1 из двигателей, а дальше число... но у меня все жестко задано.. 3 цифры и ограничение в байт...

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

ALHIMIK » 03 ноя 2009, 17:41

чёт не понял
те передаётся 4 байта ?
's' '2' '0' '0' ?

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

galex1981 » 03 ноя 2009, 17:52

Если я не ошибаюсь - эта программа выложена в исходных кодах, можно переделать ее под себя - как захочешь (написана на VisualBasic)

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

ALHIMIK » 03 ноя 2009, 18:26

а где именно выложенна ?

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

Duhas » 03 ноя 2009, 19:21

да передается 4 байта..

а о какой программе речь?

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

ALHIMIK » 03 ноя 2009, 20:48

понятия не имею :ROFL:
но принцып её работы ясен - перебор массива
вводиш нужную цифру получаеш символ
2 Духас -
складывание числа из цифр происходит путём домножения на разряды ( первую на 100 второю на 10 ) и последующим складыванием ?
а числом считается всё то что от 0х30 и до 0х39 ?

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

Duhas » 03 ноя 2009, 21:55

да примерно так ) точнее принцип должен быть таким 100% но как у меня написано - не скажу точно... писалось много всего за 1 мутную ночь ))

Re:

Doniak » 27 фев 2010, 19:25

SS писал(а):Если интересно, то можешь скачать с http://ss85.front.ru/DS/ComTerminal.exe
Это моя прога, я её как-то написал когда нужно было работать с COM портом, в этом же архиве исходник на Delphi 7. Описание не очень, но код не сложный разбирёшся быстро.

ваша программа игнорирует пустые принятые байты например 0х00, как можно это исправить?
DCB.Fnull:=falshe; должно это исправить я так понимаю но компилятор ругается такова не находит . Пишу в Borland Delphi 7 2002года может за старая версия?

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

Duhas » 27 фев 2010, 19:27

falshe ? мб False?))

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

Doniak » 27 фев 2010, 20:15

Не кретично компилятору не нравится вот это
Код: Выделить всёРазвернуть
DCB.Fnull

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связи.

boez » 28 фев 2010, 20:44

Ну так открой windows.pas, найди там определение TDCB и посмотри как это поле зовется в паскале...

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связ

Grean » 04 дек 2010, 23:56

Подскажите пожайлуста,хочу написать програму для com порта. Вот код в Cbuilder
Код: Выделить всёРазвернуть
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ HANDLE handle;
COMMTIMEOUTS CommTimeOuts;
DCB dcb;
handle = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
SetupComm(handle, 6, 6);
GetCommState(handle, &dcb);

dcb.DCBlength=sizeof(dcb);
dcb.BaudRate = CBR_115200;
dcb.fBinary = TRUE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fAbortOnError = FALSE;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = 1;
SetCommState(handle, &dcb);

CommTimeOuts.ReadIntervalTimeout= 10;
CommTimeOuts.ReadTotalTimeoutMultiplier = 1;

CommTimeOuts.ReadTotalTimeoutConstant = 100;

CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(handle, &CommTimeOuts);


PurgeComm(handle, PURGE_RXCLEAR);
PurgeComm(handle, PURGE_TXCLEAR);

DWORD numbytes, numbytes_ok, temp;
COMSTAT ComState;
OVERLAPPED Overlap;
char buf_in[6] = "Hello!";
char buf_in1[6];
numbytes = 6;
ClearCommError(handle, &temp, &ComState);
// если temp не равно нулю, значит порт в состоянии ошибки
if(!temp) WriteFile(handle, buf_in, numbytes, &numbytes_ok, &Overlap);
ClearCommError(handle, &temp, &ComState);
if(!temp) ReadFile(handle, buf_in1, numbytes, &numbytes_ok, &Overlap);
// в переменной numbytes_ok содержится реальное число переданных-
// принятых байт
Edit1->Text=buf_in1;
}
//---------------------------------------------------------------------------


Спаял кабель корочу второй с третим контактом не работает.Зарание спасибо

Модератор Vooon:Код нужно заключать в теги CODE!
Дублировать сообщения не нужно!

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связ

lord.tiran » 26 фев 2011, 14:31

Существует замечательная библиотека boost написанная на с++ она кросплатформенна - те ее можно использовать под linux, windows, qnx. Это куда эффективнее чем что-то на delphi или python. С++ куда более пригоден для написания программы управления роботом. Boost - это почти стандарт. Скачать библиотеку можно с официального сайта. Хорошую статью и код где работают с serial port я видел тут http://robot-develop.org/archives/450.

Re: COM-порт. Программирование на стороне ПК. Алгоритмы связ

Romikgy » 28 фев 2011, 12:06

на дельфе пишутся софты для работы с ком портом также легко как и на си плюс плюс


cron
Rambler\'s Top100 Mail.ru counter