Технический форум по робототехнике.
Intr » 28 ноя 2009, 14:14
И так скажу сразу я полный нюб в этом деле так что не судите строго:) в общем загвоздка такая решил прикупить модуль Ke-USB24A а вот возник вопрос с теми же светодиодами как заставить их мигать с определенной частотой ?
Последний раз редактировалось
Intr 28 ноя 2009, 14:20, всего редактировалось 1 раз.
=DeaD= » 28 ноя 2009, 14:50
Видимо для этого надо написать соответствующую программу на ПК, управляющую выходами этого модуля...

avr123.nm.ru » 28 ноя 2009, 17:53
Intr писал(а): модуль Ke-USB24A а вот возник вопрос с теми же светодиодами как заставить их мигать с определенной частотой ?
опишите задачу ЦИФРАМИ.
SSG » 28 ноя 2009, 19:02
Тут есть документы
http://www.kernelchip.ru/Ke-USB24A.phpПри установке драйвера модуля создается виртуальный com-порт. В него нужно слать команды управления модулем, приведенные в документах, имеющихся на указанной страничке.
Как работать с com-портом зависит от ОС и среды разработки ПО. Для Delphi удобно использовать компонент TBComPort. С ним поставляются хорошие примеры, которые можно быстренько под свои нужды переделать.
Intr » 28 ноя 2009, 23:20
Все всем спасибо разобрался сам путем простого таймера в программе в самом модуле нет его так что решил сделать через программу

avr123.nm.ru » 28 ноя 2009, 23:59
Надеюсь мы увидим исходнички проекта ?
Intr » 29 ноя 2009, 18:39
да там и исходников то и не нужно обычное зацикливание посылки данных на модуль а там он уже все выдает грубо говоря совершенно ничего сложного в любом учебнике можно найти

avr123.nm.ru » 29 ноя 2009, 19:16
Опять в УЧЕБНИКЕ ! Спарашиваете на форуме, а когда вас спросили поделится найденым решением (
которое ОЧЕВИДНО прямо у вас подрукой !!! ) пишите "в любом учебнике" - прикольно

galex1981 » 29 ноя 2009, 23:56
Вот и охота ваши именно исходники посмотреть
Intr » 30 ноя 2009, 09:00
- Код: Выделить всё • Развернуть
procedure TForm1.Button3Click(Sender: TObject);
var
buffer: string;
CRbyte: Shortint;
LFbyte: Shortint;
NumberWritten : DWORD;
begin
Button4.Enabled:=True;
Button3.Enabled:=False;
Stop:=False;
while not(Stop) do
begin
CRbyte := 13; // HEX 0x0D
LFbyte := 10; // HEX 0x0A
buffer := '$KE,WR,22,1' + Char(CRbyte) +
Char(LFbyte);
WriteFile(CommHandle, PChar(buffer)^, Length(buffer), NumberWritten, nil);
sleep(30);
CRbyte := 13; // HEX 0x0D
LFbyte := 10; // HEX 0x0A
buffer := '$KE,WR,22,0' + Char(CRbyte) +
Char(LFbyte);
WriteFile(CommHandle, PChar(buffer)^, Length(buffer), NumberWritten, nil);
sleep(30);
Application.ProcessMessages;
end
end;
написано на delphi с остальным думаю разберетесь использовал исходники с pcports.ru и статьей по циклам interface.ru/home.asp?artId=22517 с таймером ппц почему то происходит комп виснет и все тут
avr123.nm.ru » 30 ноя 2009, 10:02
Вот видите и нюансы есть ! Спасибо за код - возможно кому-то пригодится.
MiBBiM » 30 ноя 2009, 14:09
всмысле этот код подвешивает эвм?
Intr » 01 дек 2009, 14:17
этим у меня не вешается нормально работает уже часов 8 и ничего не глючит а вот как цикл в таймере включаю так все компу хана
Но правда тут нет очистки буфера так что может и у меня все нормально работает а у кого то все же лагать будет
contr » 01 дек 2009, 14:43
Тут фрагментик прихватизазии CommHandle видеть желательно. Возможно синхронная или асинхронная работа с портом.
Intr » 01 дек 2009, 14:54
- Код: Выделить всё • Развернуть
procedure TForm1.Button1Click(Sender: TObject);
begin
PortString := '\\.\COM' + Edit1.Text;
CommHandle := CreateFile(PChar(PortString), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING,
0, 0);
if (CommHandle = INVALID_HANDLE_VALUE) then
begin
MessageDlg('Error. Can`t Open port', mtError, [mbOK], 0);
end
else
begin
GetCommState(CommHandle, DCB);
DCB.BaudRate := CBR_9600; // FORMALLY, CONNECT BAUD DOESN`T MATTER (Virtual Com Port)
DCB.Parity := NOPARITY;
DCB.ByteSize := 8;
DCB.StopBits := OneStopBit;
CommTimeOuts.ReadIntervalTimeout := 0;
CommTimeOuts.ReadTotalTimeoutMultiplier := 0;
CommTimeOuts.ReadTotalTimeoutConstant := 1000;
CommTimeOuts.WriteTotalTimeoutMultiplier := 0;
CommTimeOuts.WriteTotalTimeoutConstant := 1000;
SetCommTimeouts(CommHandle, CommTimeOuts);
SetCommState(CommHandle, DCB);
MessageDlg('Port Open Ok', mtInformation, [mbOK], 0);
end
end;
все что есть )