Вверх ↑
Этот топик читают: Гость
Ответов: 356
Рейтинг: 31
#91: 2010-08-21 00:24:04 ЛС | профиль | цитата
KE_Connect - такой есть
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#92: 2010-08-21 01:57:50 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:29
карма: 0

0
Ответов: 356
Рейтинг: 31
#93: 2010-08-21 02:36:30 ЛС | профиль | цитата
Это Загрузка CPU на светодиодах посмотри.
Вид >> Менеджер проектов >> Windows >> Example >> KernelChip
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#94: 2010-08-22 11:15:38 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:29
карма: 0

0
Ответов: 356
Рейтинг: 31
#95: 2010-08-22 11:52:28 ЛС | профиль | цитата
Ну тады терзай поиск форума, такие темы были, типа COM порт.
------------ Дoбавленo в 11.52:
А вообще начни со справки, доступна по F1 в Hiasm или здесь

Это к прочтению обязательно, и до последней строчки (там обычно самое интересное):
Почему-то не отвечают, Обмен файлами, Не работает под FPC
карма: 0

0
Ответов: 970
Рейтинг: 270
#96: 2010-08-23 12:07:21 ЛС | профиль | цитата
[flood]Вчера читал статью про IndiBoard (панель приборов для автосимов своими руками)...
Читаю, читаю...
В качестве мозга девайса я выбрал ATmega 8535, при небольшой цене (~5$) он имеет 4 порта ввода-вывода и может работать с протоколом RS 232.

5$ - неплохо бы... Он в несколько раз дешевле KernelChip. Хорошо бы такое и в HiAsm сделать...
И тут бац!
Так как, я не знаю ни одного языка программирования (кроме Си для микроконтроллеров, на котором и написана прошивка для девайса), то решил использовать конструктор программ HiAsm.

Надо бы тоже что-нибудь типа такого девайса сделать [/flood]
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#97: 2010-08-23 15:21:42 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:29
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#98: 2010-08-30 17:33:33 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:28
карма: 0

0
Ответов: 8888
Рейтинг: 823
#99: 2010-08-30 18:45:20 ЛС | профиль | цитата
94.143.42.34, я делал IC для работы с модулем, выше он был приложен к одному из моих постов, но к сожалению схема обрезана
------------ Дoбавленo в 18.45:
Сначала надо было у себя поискать :D Нашёл!
Add(MainForm,2953706,91,147)
{
Width=511
Height=236
Caption="Управление модулем Ke-USB24A"
}
Add(InlineCode,15976965,259,161)
{
WorkPoints=#48:doOpen=Открыть порт №_ и установить входы_выходы|45:doRead=Прочитать входы (Младший бит-Линия №1)|38:doADC=Прочитать данные АЦП (0-5 вольт)|60:doWrite=Установить данные на выходах (Старший бит-Линия №24)|37:doOtherCom=Другие допускаемые команды|20:doClose=Закрыть порт|
EventPoints=#50:onRead=Результат чтения входных линий (0-16777216)|38:onADC=Результат чтения АЦП (0-5 Вольт)|28:onError=Сообщения об ошибках|
DataPoints=#24:NumbPort=Номер СОМ порта|68:NumIn=Количество входных линий (0-открыть ранее установленные; 1-24)|95:OutData=Данные для записи в порт (Если число больше [2^Кол.выходов-1], старшие биты отсекаются)|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Windows,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|19: hFile: THandle;|35: CRbyte,LFbyte,SFbyte: Shortint;|34: BinBuf: array[0..511] of Char;|20: _Number:integer;|16: Buf: string;|30: NumberWritten : DWORD; |9: public|23: NumbPort:THI_Event;|20: NumIn:THI_Event;|22: OutData:THI_Event;|21: onRead:THI_Event;|20: onADC:THI_Event;|22: onError:THI_Event;|1: |50: procedure doOpen(var _Data:TData; Index:word);|50: procedure doRead(var _Data:TData; Index:word);|49: procedure doADC(var _Data:TData; Index:word);|51: procedure doWrite(var _Data:TData; Index:word);|54: procedure doOtherCom(var _Data:TData; Index:word);|51: procedure doClose(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|0:|29:procedure THiAsmClass.doOpen;|24:var FileName: string; |16: DCB: TDCB;|24: cto:_COMMTIMEOUTS;|31: PortParam,in_out: string;|18: i,j:integer;|5:begin|15: CRbyte := 13;|15: LFbyte := 10;|14: SFbyte := 0;|45: PortParam:= ReadString(_Data,NumbPort,'3');|36: FileName := '\\.\Com' + PortParam;|120: hFile := CreateFile(PChar(FileName),GENERIC_READ or GENERIC_WRITE, 0, nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); |38: if hFile = INVALID_HANDLE_VALUE then|8: begin|73: _hi_OnEvent(onError,'Порт №' + PortParam + ' не может быть открыт!');|9: exit;|6: end|6: else|8: begin|29: GetCommState(hFile, DCB);|31: DCB.BaudRate := CBR_9600; |30: DCB.Parity := NOPARITY;|23: DCB.ByteSize := 8;|32: DCB.StopBits := OneStopBit;|42: cto.ReadIntervalTimeout := 0;|42: cto.ReadTotalTimeoutMultiplier := 0;|45: cto.ReadTotalTimeoutConstant := 1000;|42: cto.WriteTotalTimeoutMultiplier := 0;|45: cto.WriteTotalTimeoutConstant := 1000;|34: i:=ReadInteger(_Data,NumIn,0);|16: if i>0 then|11: begin|24: for j:=1 to 24 do|13: begin|50: if j>i then in_out:='0' else in_out:='1';|92: Buf := '$KE,IO,SET,'+ int2str(j)+ ',' + in_out +',S' + Char(CRbyte) + Char(LFbyte);|72: WriteFile(hFile, PChar(Buf)^, Length(Buf), NumberWritten, nil);|19: Sleep(2); |13: end; |10: end;|54: Buf := '$KE,RD,ALL' + Char(CRbyte) + Char(LFbyte);|67: WriteFile(hFile, PChar(Buf)^, Length(Buf), NumberWritten, nil);|13: Sleep(2);|53: ReadFile(hFile, BinBuf, 512, NumberWritten, nil);|15: _Number:=0;|23: for j:=0 to 511 do|11: begin|52: if BinBuf[j]='x' then _Number:= _Number + 1;|31: BinBuf[j]:=Char(SFbyte);|11: end; |78: _hi_OnEvent(onError,'Порт №' + PortParam + ' имеет ' + int2str(24-_Number)|73: +' входов и ' + int2str(_Number) + ' выходов.'); |86: for j:=0 to 511 do BinBuf[j]:=Char(SFbyte); |8: end; |4:end;|0:|29:procedure THiAsmClass.doRead;|21:var Line,Value: Byte;|18: j,Res:integer;|5:begin|52: Buf := '$KE,RD,ALL' + Char(CRbyte) + Char(LFbyte);|65: WriteFile(hFile, PChar(Buf)^, Length(Buf), NumberWritten, nil);|12: Sleep(1);|51: ReadFile(hFile, BinBuf, 512, NumberWritten, nil);|82: if ((NumberWritten <> 0) and (StrLComp(BinBuf, '#RD,WRONGLINE', 13) <> 0)) then|9: begin|13: Res:=0;|33: for j:=0 to NumberWritten do|11: begin|30: if BinBuf[j+4]='1' then|13: begin|53: Res:=Res + round(exp(j*0.6931471805599453));|21: end; |10: end;|7: end|90: else _hi_OnEvent(onError,'Одна из линий повреждена или все линии настроены нв ВЫХОД!');|8: |26: _hi_OnEvent(onRead,Res);|46: for j:=0 to 511 do BinBuf[j]:=Char(SFbyte);|4:end;|0:|28:procedure THiAsmClass.doADC;|14:var j:integer;|15: Res:string;|5:begin|50: Buf := '$KE,ADC' + Char(CRbyte) + Char(LFbyte);|65: WriteFile(hFile, PChar(Buf)^, Length(Buf), NumberWritten, nil);|12: Sleep(2);|51: ReadFile(hFile, BinBuf, 512, NumberWritten, nil);|11: Res:='0';|29: if(NumberWritten > 0) then|9: begin|21: for j:=5 to 8 do|11: begin|26: Res:=Res+BinBuf[j];|10: end;|8: end;|43: _hi_OnEvent(onADC,5*(Str2Int(Res)/1024));|45: for j:=0 to 511 do BinBuf[j]:=Char(SFbyte);|4:end;|0:|30:procedure THiAsmClass.doWrite;|20:var Res,i,j:integer;|15: Vol:string;|5:begin|19: if _Number>0 then|8: begin|39: Res:= ReadInteger(_Data,OutData,0);|26: for i:=1 to _Number do|10: begin|20: j:= Res mod 2;|23: Res:= Res div 2; |98: Buf := '$KE,WR,' + int2str(24-_Number+i) + ',' + int2str(j) + Char(CRbyte) + Char(LFbyte); |71: WriteFile(hFile, PChar(Buf)^, Length(Buf), NumberWritten, nil); |9: end;|6: end|61: else _hi_OnEvent(onError,'Все линии настроены нв ВХОД!'); |6:end; |0:|33:procedure THiAsmClass.doOtherCom;|21:var _OtherCom:string;|5:begin|29: _OtherCom:=ToString(_Data);|41: if _OtherCom='' then _OtherCom:='$KE';|51: Buf := _OtherCom + Char(CRbyte) + Char(LFbyte); |65: WriteFile(hFile, PChar(Buf)^, Length(Buf), NumberWritten, nil);|12: Sleep(1);|53: ReadFile(hFile, BinBuf, 512, NumberWritten, nil); |30: _hi_OnEvent(onError,BinBuf);|4:end;|0:|30:procedure THiAsmClass.doClose;|5:begin|21: CloseHandle(hFile);|33: hFile := INVALID_HANDLE_VALUE; |4:end;|0:|4:end.|
link(onRead,318538:doText,[(299,167)(299,139)])
link(onADC,10521649:doText,[])
link(onError,2509666:doText,[(299,181)(299,209)])
link(NumbPort,12023671:Text,[(265,125)(209,125)])
link(NumIn,11714360:Text,[])
link(OutData,10813718:Text,[(279,125)(314,125)])
}
Add(Button,14250580,49,77)
{
Left=15
Top=25
Width=90
Caption="Открыть порт №"
link(onClick,4700204:doSearch,[])
}
Add(Edit,10521649,308,168)
{
Left=115
Top=85
Width=80
Text=""
DataType=4
ReadOnly=0
}
Add(Button,8810752,189,168)
{
Left=15
Top=55
Width=90
Caption="Прочитать порт"
link(onClick,15976965:doRead,[])
}
Add(Button,12513711,189,336)
{
Left=15
Top=175
Width=90
Caption="Закрыть порт"
link(onClick,15976965:doClose,[(252,342)(252,202)])
}
Add(Edit,11714360,266,84)
{
Left=160
Top=25
Width=35
Text="10"
DataType=2
}
Add(Edit,12023671,203,84)
{
Left=110
Top=25
Width=20
Text="3"
link(onChange,15976965:doOpen,[(247,90)(247,167)])
}
Add(Label,11801339,308,273)
{
Left=135
Top=28
Width=16
Height=17
Caption="на"
}
Add(Label,4001024,308,238)
{
Left=201
Top=28
Width=39
Height=17
Caption="входов"
}
Add(Label,2509666,308,203)
{
Left=25
Top=5
Color=12639424
Caption=""
}
Add(Button,16401746,189,203)
{
Left=15
Top=85
Width=90
Caption="Прочитать АЦП"
link(onClick,15976965:doADC,[(234,209)(234,181)])
}
Add(Edit,10813718,308,84)
{
Left=115
Top=115
Width=80
Text="16000000"
}
Add(Button,11484747,189,238)
{
Left=15
Top=115
Width=90
Caption="Записать в порт"
link(onClick,15976965:doWrite,[(239,244)(239,188)])
}
Add(Edit,318538,308,133)
{
Left=115
Top=55
Width=80
Text=""
ReadOnly=0
}
Add(Button,2307002,105,322)
{
Left=15
Top=145
Width=90
Caption="Другая команда"
link(onClick,6217553:doData,[])
}
Add(Edit,16686797,147,280)
{
Left=115
Top=145
Width=125
Text="$KE"
link(onEnter,688024:doEvent1,[])
}
Add(DoData,6217553,147,322)
{
link(onEventData,14274071:doWork3,[(235,328)])
link(Data,16686797:Text,[])
}
Add(Hub,688024,189,287)
{
link(onEvent1,4801919:doData,[(233,293)(233,274)(93,274)(93,293)])
link(onEvent2,14274071:doWork2,[])
}
Add(DoData,4801919,105,287)
{
Data=String($KE)
link(onEventData,16686797:doText2,[])
}
Add(HubEx,14274071,231,294)
{
link(onEvent,15976965:doOtherCom,[(246,300)(246,195)])
}
Add(Memo,8432095,308,322)
{
Left=255
Top=25
Width=245
Height=165
Strings=#44:Некоторые "другие" команды модуля Ke-USB24A:|35:$KE Проверка модуля Ответ: #OK|95:$KE,UD,SET,<Data> Запись данных в память модуля, где Data-до 32 байт данных. Ответ: #UD,SET,OK|68:$KE,UD,GET Чтение данных из памяти модуля. Ответ: #UD,<Data> Data|106:$KE,USB,SET,<Data> Запись дескриптора USB в память модуля, где Data-до 32 байт данных. Ответ: #USB,SET,OK|75:$KE,Usb,GET Чтение дескриптора USB из памяти модуля. Ответ: #USB,<Data>|71:$KE,SER Чтение серийного номера модуля. Ответ: #SER,<Serial Number>|
ScrollBars=1
}
Add(KE_DetectDevices,4700204,98,77)
{
link(onSearch,5127487:doValue,[(146,83)(146,48)])
}
Add(If_else,12138524,154,84)
{
Op2=String(Ke-USB24A)
link(onTrue,12023671:doText,[])
link(Op1,5127487:Value,[])
}
Add(Memory,5127487,154,42)
{
}
Обратите внимание на doADC - команда формируется как строка, можно изменить как угодно.
карма: 19

0
Гость
Ответов: 17029
Рейтинг: 0
#100: 2010-08-30 21:07:36 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:28
карма: 0

0
Ответов: 8888
Рейтинг: 823
#101: 2010-08-30 22:00:36 ЛС | профиль | цитата
94.143.42.34, но Вы не обратили внимание на кнопку "Другие команды" - там есть и поле ввода и место для ответа (см. Рис. - омечено)
карма: 19

0
файлы: 1ke.jpg [63.6KB] [580]
Гость
Ответов: 17029
Рейтинг: 0
#102: 2010-09-01 00:20:21 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:28
карма: 0

0
Ответов: 8888
Рейтинг: 823
#103: 2010-09-01 09:31:28 ЛС | профиль | цитата
94.143.42.34, надеюсь, Вы сохранили *.pas файлы перед изменением содержания
карма: 19

0
Гость
Ответов: 17029
Рейтинг: 0
#104: 2010-09-01 13:42:41 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:26
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#105: 2010-09-18 15:08:31 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-24 07:12:25
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)