Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Вниз

Надо прочитать данные из COM-port.   Найти похожие ветки 

 
MonZon   (2007-01-10 17:58) [0]

Пробовал разные компоненты- возвращают муть всякую.  Источник сигнала микроконтроллер atmega. отсылает данные в формате [n][x0][x1][x2]. n - номер канала. х0, х1, х2 - сигнал с ацп(почему три байта? потому что не влезает по ширине в один.). Все это дело качается по стандартной аппаратной реализации USART(или UART). Комп принимает данные на ура, но только через ГиперТерминал. Из дельфы мусор. Может есть где исходник? ЗЫ. Еще я могу поменять формат отправления данных, если это упростит задачу. например можно посылать данные строкой. И на конце строки "\n". и пусть программка ловит данные построчно и складывает в МЕМО.

Всем Спасиб. Есть еще добрые люди =)


 
tesseract ©   (2007-01-10 18:00) [1]

CreateFile("com1"

ReadFile/writefile

А мусор приходит скорее всего из-за неверных буферов приёма.


 
MonZon   (2007-01-10 18:04) [2]

а можно более развернутый кусок кода? в дельфях слабоват =(


 
MonZon   (2007-01-10 18:18) [3]

для примера есть такой кусок
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
 Str: String;
begin
 ComPort.ReadStr(Str, Count);
 Memo.Text := Memo.Text + Str;
end;

но приходит абракадабра.

еще там есть событие procedure TForm1.ComPortRxBuf(Sender: TObject; const Buffer;  Count: Integer);

и как мне достать свои данные оттуда?


 
tesseract ©   (2007-01-10 18:21) [4]

Почему стринг-то?

Нужно Array[0..3] of byte получать. Конечно муть придёт!


 
MonZon   (2007-01-10 18:31) [5]

а разве ComPort.ReadStr(Str, Count); кроме стринга что-нить еще поддерживает?


 
MonZon   (2007-01-10 18:33) [6]

Да и как я потом байты в интегеры переведу? А очень надо именно интегер.


 
tesseract ©   (2007-01-10 18:40) [7]


> Да и как я потом байты в интегеры переведу? А очень надо
> именно интегер.


У тебя подаёться четыре байта, что равно одному целому, т .е  ты можешь просто принять integer. НО неизвестно в каком пордя дке они следуют,  могут навыверт - младшим вперёд и придёться колдовать над прерващением его в нормальный вид.  

Может просто shr/shl слить  array of byte в один интегер ?  да и номер канала не придёться отделять.  А в то что в компоненте нет ReadBuffer в жизни не поверю.


 
MonZon   (2007-01-10 18:49) [8]

Мда че то я не допираю. значит мне бы получить номер канала в один интегер, а остальные три байта в другой. как это сделать подскажи плиз?

Есть вот такое дело:
comport.Read(var buffer; count:integer;)


 
MonZon   (2007-01-10 18:50) [9]

а байты в порядке слева направо: младший,средний, старший
(вроде не напутал)


 
MonZon   (2007-01-10 21:09) [10]

Допер наконец-то
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
 Str: String;
begin
 ComPort.ReadStr(Str, Count);
memo.Lines.add(AnsiMidStr(str,0,1));
memo.Lines.add(AnsiMidStr(str,2,count));
end;

Если кому-то надо - то вот оно.
Всем спасибо.


 
tesseract ©   (2007-01-10 22:04) [11]


> MonZon   (10.01.07 21:09) [10]


И чем тебя array of byte не устраивал?



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
11-1163272588
kolusr
2006-11-11 22:16
2007.06.24
KOLSocket свойство Сount


2-1180442520
Alexdeil
2007-05-29 16:42
2007.06.24
SQL запрос по дате и времени


8-1161079322
CyMKuH
2006-10-17 14:02
2007.06.24
Теги


15-1180464954
Иксик
2007-05-29 22:55
2007.06.24
.NET 2.0 web.config


15-1180439083
Богдан1024
2007-05-29 15:44
2007.06.24
<META Name="keywords" Content="">





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский