Технический форум по робототехнике.
ALHIMIK » 03 ноя 2009, 11:27
спасибо
так и знал что всё нужно делать своими руками

Duhas » 03 ноя 2009, 12:05
хотя, у меня контроллер преобразует.. т.е. я в терминалке пишу s200s210 он поймет что это как s - скорость 1 из двигателей, а дальше число... но у меня все жестко задано.. 3 цифры и ограничение в байт...
ALHIMIK » 03 ноя 2009, 17:41
чёт не понял
те передаётся 4 байта ?
's' '2' '0' '0' ?
galex1981 » 03 ноя 2009, 17:52
Если я не ошибаюсь - эта программа выложена в исходных кодах, можно переделать ее под себя - как захочешь (написана на VisualBasic)
ALHIMIK » 03 ноя 2009, 18:26
а где именно выложенна ?
Duhas » 03 ноя 2009, 19:21
да передается 4 байта..
а о какой программе речь?
ALHIMIK » 03 ноя 2009, 20:48
понятия не имею
но принцып её работы ясен - перебор массива
вводиш нужную цифру получаеш символ
2 Духас -
складывание числа из цифр происходит путём домножения на разряды ( первую на 100 второю на 10 ) и последующим складыванием ?
а числом считается всё то что от 0х30 и до 0х39 ?
Duhas » 03 ноя 2009, 21:55
да примерно так ) точнее принцип должен быть таким 100% но как у меня написано - не скажу точно... писалось много всего за 1 мутную ночь ))
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года может за старая версия?
Duhas » 27 фев 2010, 19:27
falshe ? мб False?))
Doniak » 27 фев 2010, 20:15
Не кретично компилятору не нравится вот это
- Код: Выделить всё • Развернуть
DCB.Fnull
boez » 28 фев 2010, 20:44
Ну так открой windows.pas, найди там определение TDCB и посмотри как это поле зовется в паскале...
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!
Дублировать сообщения не нужно!
lord.tiran » 26 фев 2011, 14:31
Существует замечательная библиотека boost написанная на с++ она кросплатформенна - те ее можно использовать под linux, windows, qnx. Это куда эффективнее чем что-то на delphi или python. С++ куда более пригоден для написания программы управления роботом. Boost - это почти стандарт. Скачать библиотеку можно с официального сайта. Хорошую статью и код где работают с serial port я видел тут
http://robot-develop.org/archives/450.
Romikgy » 28 фев 2011, 12:06
на дельфе пишутся софты для работы с ком портом также легко как и на си плюс плюс