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

Форум программистов: 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 ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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