Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 3 из 3«123
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Как подключить PIC к порту COM для команды SERIN (Приём и передача по программному интерфейсу RS232)
Как подключить PIC к порту COM для команды SERIN
Володимир Дата: Пн, 27.09.2010, 11:26  |                                                                                                                Сообщение # 31
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Помогите решить такую задачу.

Короче делаю прибор который будет обмениваться информацией з блоком управления инжектором автомобиля (ЭБУ). И тут столкнулся с проблемой, при приеме данных командой HSERIN данные как я понял принимаются побайтно и каждый принятый байт присваивается конкретной переменной, но в моем случае нет гаранттии что ответ будет фиксированой длинны. Суть задачи состоит в том что нужно подать запрост в ЭБУ а тот должен дать ответ, но ответ может быть положиттельным длинной примерно 36 байт и в этом ответе первый байт будет означать что ответ положительный, а может и быть отрицательным всего два байта, где первый байт означает что ответ отрицательный, а второй код ошибки.

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

ЯНДЕКС Дата: 27.09.2010
Matrix252005 Дата: Пн, 27.09.2010, 12:28  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 676
Репутация: 36   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток. Володимир, вот гляньте. Когда то делал проект "Въезд-выезд авто с предприятия". Почти был готов сам девайс. Но дальше нашей "бюрократии" не пошел. Знак "!" в программе, означает начало считывания с порта.
Прикрепления: avto_priem.bas(1Kb)


THE TRUTH IS OUT THERE.

С уважением, Николай.
Володимир Дата: Пн, 27.09.2010, 12:45  |                                                                                                                Сообщение # 33
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Ок, счас посмотрю.
--------------------------------------------------------
Я так понял что данние вы читаете побайтно в цикле, заполняя масив. Тоесть читаете первый байт анализируете и читаете остальные. А связ при этом не обрывалась?

Сообщение отредактировал Володимир - Пн, 27.09.2010, 12:50
Matrix252005 Дата: Пн, 27.09.2010, 12:52  |                                                                                                                Сообщение # 34
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 676
Репутация: 36   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

В принципе да. Только там используется ЧМ передатчики. Связь обрывается, для этого и используется "стартовый" символ ("!").

THE TRUTH IS OUT THERE.

С уважением, Николай.
Володимир Дата: Ср, 06.10.2010, 00:06  |                                                                                                                Сообщение # 35
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Кто нибудь пробовал подключится к блоку управления инжектором автомобиля, пробую таким кодом что-то никак не могу законектится.

Define OSC 16
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_BAUD 10400
DEFINE HSER_SPBRG 95

startCom: ; startCommunication------------------
ks=0
startCom1:
ks=ks+1
button swLeft, 0, 255, 0, bufL, 1, EndstartCom
lcdout $fe, 1
lcdout $fe, 2, "Connect",$3e
lcdout $fe, %11000000, dec ks
'hserout [$f0]
hserout [$f0,$81,$10,$F1,$81,$03]
lcdout $fe, 1
lcdout $fe, 2, "Connect",$3c
lcdout $fe, %11000000, dec ks
pause 40
for i=0 to 9
hserin 300, startCom1, [otv[i]]
next
if i=9 and otv[otv]=$c1 then
lcdout $fe, %11000000, "Ok"
conn=1
for i=10 to 13
hserin 100, startCom1, [otv[i]]
next
return
else
lcdout $fe, %11000000, "Err"
conn=0
pause 100
goto startCom
endif '-----------------------------------------------
EndstartCom:
conn=0
return
=============================
Похоже вопрос пока снимается, как говорится утро вечера мудренее, у меня if i=9 and otv[otv]=$c1 then а должно быть if i=9 and otv[i]=$c1 then

Но все равно, как думаете алгоритм правильный?

Сообщение отредактировал Володимир - Ср, 06.10.2010, 09:54
Matrix252005 Дата: Ср, 06.10.2010, 10:26  |                                                                                                                Сообщение # 36
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 676
Репутация: 36   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток. Володимир, вот почитайте... http://autoscan.kiev.ua/2kl_lpg_usb.php
З.Ы. Скорее всего у Вас что-то типа: http://autoscan.kiev.ua/forum....art=110


THE TRUTH IS OUT THERE.

С уважением, Николай.

Сообщение отредактировал Matrix252005 - Ср, 06.10.2010, 11:46
Володимир Дата: Ср, 06.10.2010, 23:35  |                                                                                                                Сообщение # 37
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Скажите пожалуйста а на этой схеме http://www.bk-ukraine.narod.ru/shema.files/image003.jpg я правильно подключил микросхему MC33290 к пику, я имею в виду выводи TX и RX, может они должны подключатся накрест, тоесть TX к RX ? Хотя если включить передачу на компорт то напряжение на виводе k-line начинает чуть менятся.
========================================================================
Ну схема вроде правильная, тут также http://www.obddiag.net/images/sch5.png но я думаю, может нужно есче подтягивающие резистори навесить, хотя в микросхеме MC33290 они вроде есть, ТХ 125к на плюс 5В

Сообщение отредактировал Володимир - Чт, 07.10.2010, 10:35
Форум Picbasic.ru » Программирование МК » PicBasicPro » Как подключить PIC к порту COM для команды SERIN (Приём и передача по программному интерфейсу RS232)
Страница 3 из 3«123
Поиск: