Вверх ↑
Этот топик читают: Гость
Ответов: 128
Рейтинг: 1
#1: 2013-01-05 23:56:07 ЛС | профиль | цитата
к примеру раньше принимал 6 байт ,а если надо будет принять 40 байт ,то это возможно ? просто нет возможности сейчас попробовать это сделать в HIASM , а пишу для микроконтроллера HEX .
карма: 0

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#2: 2013-01-05 23:57:51 ЛС | профиль | цитата
deman писал(а):
принять 40 байт ,то это возможно

До 256 за один цикл чтения
карма: 22

0
Ответов: 128
Рейтинг: 1
#3: 2013-01-06 00:03:52 ЛС | профиль | цитата
спасибо !!!
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#4: 2013-01-06 13:34:22 ЛС | профиль | цитата
nesco писал(а):
До 256 за один цикл чтения
nesco, прокомментируй картинку:
com-port.gif
Вот здесь - один цикл чтения и ... размер переданного файла около 8.7 кб. (8918 байт)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1com-port.gif [31KB] [281]
Разработчик
Ответов: 26156
Рейтинг: 2127
#5: 2013-01-06 13:59:24 ЛС | профиль | цитата
Tad писал(а):
прокомментируй картинку

А причем здесь длина переданных данных и читаемое количество
Там точно прочиталось больше 256 символов

По идее, не должно читать больше 256, длина буфера же ограничена при запросе функции чтения, а вот передавать можно без ограничений

procedure THICOM._work_doRead;
var
Received: DWORD;
Len:cardinal;
Buffer:string;
begin
len := ToInteger(_Data);
SetLength(Buffer,256);
if hFile <> INVALID_HANDLE_VALUE then
if ReadFile(hFile, Buffer[1], Len, Received, nil) then
begin
SetLength(Buffer,Received);
_hi_OnEvent(_event_onRead,Buffer)
end
else _hi_OnEvent(_event_onRead,string('));
end;


карма: 22

0
Ответов: 16884
Рейтинг: 1239
#6: 2013-01-06 14:06:00 ЛС | профиль | цитата
И не хочешь в компонент COM ввести выбор скорости ?
Если захочешь, то прилагаю список скоростей

50,75,110,150,300,600,1200,1800,2000,2400,3600,4800,7200,9600,14400,19200,28800,38400,57600,115200

Вот выкладываю нашу license.txt
com-port2.gif

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1com-port2.gif [28KB] [280]
Разработчик
Ответов: 26156
Рейтинг: 2127
#7: 2013-01-06 14:16:58 ЛС | профиль | цитата
Tad писал(а):
И не хочешь в компонент COM ввести выбор скорости ?

А надо ли это И не придется ли отказаться от нестандартных скоростей (не у всех они используются, но используются -- у меня, к примеру)
------------ Дoбавленo в 14.16:
Tad писал(а):
Вот выкладываю нашу license.txt

Попробуй на разных портах пробросить, а не эхом
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#8: 2013-01-06 14:20:36 ЛС | профиль | цитата
nesco, посмотри выше. Добавил ещё картинку с нашим license.txt
Правда всего 2761 байт, но всё равно за один раз.
------------ Дoбавленo в 14.20:
nesco писал(а):
Попробуй на разных портах
Ага. Кабеля нет. Просто закротил 2 с 3.
Где-то я встречал, что вроде Com-драйвер винды имеет буфер 4кб.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#9: 2013-01-06 14:22:48 ЛС | профиль | цитата
Tad писал(а):
Правда всего 2761 байт, но всё равно за один раз.

Да ХЗ, как оно поведет себя, если использовать не эхо-передачу
------------ Дoбавленo в 14.22:
Tad писал(а):
Просто закротил 2 с 3

А где у тебя в схеме порты переключаются, че-то я не догнал
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#10: 2013-01-06 14:44:38 ЛС | профиль | цитата
один порт и на передачу и на приём
У кого два порта и кабель есть ! проверьте !!!

Add(MainForm,1002369,245,70)
{
Width=541
Height=403
Point(onClose)
link(onCreate,11183120:doEvent1,[])
link(onClose,7739652:doClose,[(288,97)(288,111)])
}
Add(COM,7739652,343,98)
{
BaudRate=115200
link(onWrite,8196068:doEvent,[])
link(onRead,16358200:doAdd,[])
}
Add(Hub,6201483,301,126)
{
link(onEvent1,7739652:doRead,[])
link(onEvent2,13750852:doWork3,[(326,139)])
}
Add(Hub,11183120,294,84)
{
link(onEvent1,7739652:doOpen,[(332,90)(332,104)])
link(onEvent2,13750852:doWork1,[(326,97)])
}
Add(HubEx,13750852,322,112)
{
link(onEvent,7739652:doRXClear,[])
}
Add(Debug,8196068,406,98)
{
link(onEvent,6201483:doEvent1,[(487,104)(487,155)(288,155)(288,132)])
}
Add(StrList,14927814,203,35)
{
FileName="..license.txt"
}
Add(Button,5282038,91,112)
{
Left=15
Top=5
link(onClick,15435173:doEvent1,[])
}
Add(DoData,7462840,203,119)
{
link(onEventData,7739652:doWrite,[])
link(Data,14927814:Text,[])
}
Add(Hub,15435173,140,112)
{
link(onEvent1,14927814:doLoad,[(178,118)(178,69)])
link(onEvent2,7462840:doData,[])
}
Add(Memo,16358200,448,105)
{
Left=15
Top=35
Width=495
Height=315
ScrollBars=3
}


------------ Дoбавленo в 14.44:
Наверное только Леонид нас спсет.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#11: 2013-01-06 14:49:30 ЛС | профиль | цитата
Tad писал(а):
один порт и на передачу и на приём

А мне че-то показалось, что это порты 2 и 3, а это пины оказалось. Не исключено, что функция ReadFile игнорирует установленную длину буфера, и ее нужен только указатель на этот буфер
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#12: 2013-01-06 15:02:17 ЛС | профиль | цитата
nesco, насчет первой картинки: ты был прав - обрезало.
Обрезало до размера 4110 байт. Значит размер буфера приёма драйвера COM - 4кб
------------ Дoбавленo в 15.02:
nesco писал(а):
Не исключено, что функция ReadFile игнорирует установленную длину буфера

Скорее всего отрабатывает на увеличение вторая

SetLength(Buffer,Received);
Если это так, то могут возникать очень хреновые последствия, вызываемые этими 256 байтами буфера.
Нужно исправить в SetLength(Buffer,256); 256 на 4096
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#13: 2013-01-06 15:19:34 ЛС | профиль | цитата
Tad писал(а):
Скорее всего отрабатывает на увеличение вторая

Но данные же уже в этом буфере есть, и записаны они сверх ранее установленных 256, значит функции по веникам установленная длина, и ей нужен только указатель
------------ Дoбавленo в 15.19:
Tad писал(а):
Нужно исправить в SetLength(Buffer,256); 256 на 4096

А ты попробуй выкинуть SetLength(Buffer,256) вообще, тогда и проверим -- нужна ли функции длина
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#14: 2013-01-06 20:42:55 ЛС | профиль | цитата
nesco писал(а):
А ты попробуй выкинуть SetLength(Buffer,256) вообще
[flood]Сейчас немогу. Пришли друзья - пьём за новый год. [/flood]
------------ Дoбавленo в 17.58:
nesco, попробовал.Без этой строки не работает. Поставил

SetLength(Buffer,4096);

------------ Дoбавленo в 20.31:
И сделал себе выбор из стандартного списка.
com-scor.gif
nesco, а в каких случаях нужна нестандартная скорость ?
------------ Дoбавленo в 20.42:
Леонид,[flood]
Леонид писал(а):
Add(Replace,5357029,217,161)
{
SubStr="10"
DestStr="1013"
}

Запоминаем, как азбуку: в Windows DestStr="1310"
LF (ASCII 0x0A) используется в Multics, UNIX, UNIX-подобных операционных системах (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD и др.), BeOS, Amiga UNIX, RISC OS и других;
CR (ASCII 0x0D) используется в 8-битовых машинах Commodore, машинах TRS-80, Apple II, системах Mac OS до версии 9 и OS-9;
CR+LF (ASCII 0x0D 0x0A) используется в DEC RT-11 и большинстве других ранних не-UNIX- и не-IBM-систем, а также в CP/M, MP/M (англ.), MS-DOS, OS/2, Microsoft Windows, Symbian OS, протоколах Интернет.

[/flood]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1com-scor.gif [11.9KB] [290]
Разработчик
Ответов: 26156
Рейтинг: 2127
#15: 2013-01-06 20:51:46 ЛС | профиль | цитата
Tad писал(а):
а в каких случаях нужна нестандартная скорость ?

Когда тебе пихают устройство, имеющее нестандартную скорость, а ты ничего поделать не можешь. Прикинь, у меня есть устройство, работаюшее на скорости 333 бод. И нужны ли такие новшества, когда прекрасно работало все хрен знает сколько. Номер порта проще переделать, там индекс списка отличается на 1 от номера, а вот со скоростью, увы -- косяк
карма: 22

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