→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
RS 232 Помогите. 
Автор Сообщение
Начинающий

Регистрация: 22.09.2014
Сообщения: 2

Репутация: 0 [ ? ]
Сообщение RS 232 Помогите.
Организовываю общение с микроконтроллером по СОМ порту.
Прога ложится: "Access violation fat address 00403694"

Прием:

Cnt:=0;
while true do
begin
TransMask:=0;
WaitCommEvent(CommHandle,TransMask,@Ovr); //ждем
if (TransMask and EV_RXCHAR)=EV_RXCHAR then //проверяем нужное событие
begin
ClearCommError(CommHandle,Errs,@Stat);//сбрасываем флаг
Kols := Stat.cbInQue;
ReadFile(CommHandle,Res,Kols,Kols,@Ovr);//читаем
if Kols>0 then
begin
Move(Res,Buff[Cnt],Kols);
Inc(Cnt,Kols);
if Cnt > 64 then
begin
GetMem(Reciv,sizeof(Cnt));
Move(Buff[0],Reciv^,Cnt);
PostMessage(Form1.Handle,rx_bup,Integer(Reciv),Cnt);
Cnt:= 0;
end;
end;
end;//mask
end;//while


обрабатываю:

Bf := Pointer(msg.WParam);
Cnt := msg.LParam;
S := '';
for i := 0 to Cnt-1 do
begin
S := S + Chr(Byte(Bf^));
inc(Integer(Bf));
end;
if Form1.checkbox1.Checked then Form1.Memo2.lines.Add(S);
FreeMem(Pointer(msg.WParam),msg.LParam);

Данные передаются в основной поток и обрабатываются. Краш кажись при освобождении памяти, ПОЧЕМУ?


22.09.2014 21:18
Профиль Отправить email
Начинающий

Регистрация: 22.09.2014
Сообщения: 2

Репутация: 0 [ ? ]
Сообщение Re: RS 232 Помогите.
Тему закр


05.10.2014 14:27
Профиль Отправить email
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Yahoo [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
© 2013 «Форум программистов Украины»