1 (08-11-2018 17:50:45 отредактировано cinsler)

Тема: COM порт

Добрый день. Есть код посредством которого компьютер общается с мозгами авто порт rs232 скорость обмена 7812 RX и TX инвертированны можно ли соединить canny7 с мозгами авто для конвертирования в can. код во вложении.

Вложений в сообщении

Иконка вложения код.txt 2.22 кб, скачивался 33 раз, последний раз 2018-11-08 

2

Re: COM порт

7812 бит в секунду? Есть более полная версия кода, в частности значение Properties.Settings.Default.UseBaud ?
Стоящая перед вами задача так же не ясна  - что именно и каким образом вы хотите конвертировать?

3

Re: COM порт

Более полная версия кода.
global::System.Configuration.DefaultSettingValueAttribute("7812")
в итоге Properties.Settings.Default.UseBaud = 7812.
Конвертирую примерно так получаю значение пробега из ECU  вот код

( while (serialPort1.BytesToRead > 0)
                {
                    inbyte = readbytefromsci();
                }

                double mileage = 0;                                                              //mileage read
                for (int f = 0; f <= 7; f++)
                {
                    sendbytetosci(0x15);
                    sendbytetosci(0xb6);
                    idbyte1 = Convert.ToByte(f * 2);
                    sendbytetosci(idbyte1);
                    idbyte1 = readbytefromsci();
                    LogBox.AppendText(idbyte1.ToString());
                    sendbytetosci(0x15);
                    sendbytetosci(0xb6);
                    idbyte2 = Convert.ToByte(f * 2 + 1);
                    LogBox.AppendText(idbyte2.ToString());
                    sendbytetosci(idbyte2);
                    idbyte2 = readbytefromsci();
                    mileage = mileage + idbyte1 * 256;
                    mileage = mileage + idbyte2;
                }

                mileage = mileage * 1.61;
                textBox8.Text = mileage.ToString()+" Км";
                textBox17.Text = "";
)

дальше передаю его в can шину на адрес (0x65D, 0, 8, 0x00, cc, bb, aa, 0x00, 0x00, 0x00, 0x00); и магнитола либо экран nexton (пока не решил) его отображает ну и т.д.

Вложений в сообщении

Иконка вложения код.txt 8.64 кб, скачивался 26 раз, последний раз 2018-11-08 

4

Re: COM порт

Скорость UART/RS232  7812 бод если я правильно понял, в списке поддерживаемых контроллером отсутствует, но добавить можно в течении дня.
Вот только я так и не понял, что именно должен делать CANNY 7:

Если послать запрос / принять данные RS232, а затем передать по CAN - на магнитолу - не вижу проблем.Примеры работы с UART и CAN есть на форуме и в документации.

А вот если послать запрос / принять данные RS232, а затем передать по UART на Nextion то нужен контроллер с двумя UART, например CANNY 5 nano +  конвертер UART/RS232. Однако использование CAN-контроллера для связки двух UART несколько избыточно, как мне кажется.

5 (09-11-2018 08:18:46 отредактировано cinsler)

Re: COM порт

Пока остановлюсь на отправке данных из ECU на магнитолу. К тому же данные на nexton я могу получать через интерфейс CAN используя например CAN-BUS V1.2, если можно добавьте скорость 7812 бод.
И ещё вариант инверсии у вас возможен по анологи с ftdi см. вложение

Вложений в сообщении

44.png, 54.59 кб, 643 x 503
44.png 54.59 кб, скачивался 21 раз, последний раз 2018-11-09 

6

Re: COM порт

Скорость добавили. Инверсия возможна.
Обновленное системное ПО контроллера для тестирования выслал вам на электронную почту.
Подробнее про UART/RS-232 для CANNY 7: http://wiki.canny.ru/index.php?title=CA … 2_-_Modbus

7

Re: COM порт

Спасибо скорость вижу. Пытаюсь написать диаграмму для проверки работы "эхо" 9 и 10 соответственно к usb ftdi uart который сейчас у меня подключается к авто через serial port monitor даю данные соответственно контроллер должен их же вернуть. Он не возвращает где именно я ошибся? Либо если у вас есть вариант диаграммы которая при получении на uart например кода 0х10 передает на uart2 код например 0x27.

Вложений в сообщении

Иконка вложения тест.cfd 800 б, скачивался 23 раз, последний раз 2018-11-10 

8

Re: COM порт

Я не увидел в диаграмме ошибки, эхо должно работать. Но смогу проверить "в железе" лишь в понедельник. Осциллограмма бы очень помогла в диагностике. Возможно, дело в отсутствии подтяжки каналов к плюсу. В приложенной диаграмме подтяжка включена, но перед её испытанием убедитесь, что у вас размах сигнала на устройстве с которым вы пытаетесь связаться не 5В, а минимум 12В.

Вложений в сообщении

Иконка вложения тест10-27.cfd 972 б, скачивался 22 раз, последний раз 2018-11-11 

9

Re: COM порт

Спасибо. Заработало сам тормознул питание 12 волт на контроллер подал и всё пошло, питания с usb на него значит недостаточно.

10

Re: COM порт

Продолжаю заниматься проэктом столкунулся с проблемой которую не могу решить вот кусок кода           
           
           sendbytetosci(16);
            System.Threading.Thread.Sleep(200);
            byte er = 0;
            string err = "";
            int errorcount = serialPort1.BytesToRead;
            errorcount--;
            for (int f = 0; f < errorcount; f++)
            {
                er = readbytefromsci();
                тут обрабатываю полученные значения
            }
т.е я отправляю в порт 16 получаю в ответ 16 и следом коды ошибок например
в порт 0х10
из порта 0х10 0х28 0х25 0хFE Где FE - конец перечисления кодов ошибок длина может быть различной, как это можно организовать в диаграмме?

11

Re: COM порт

Сколько портов предполагается опрашивать?
Какова максимально возможная длина сообщения, содержащего коды ошибок?

12 (30-11-2018 18:39:40 отредактировано cinsler)

Re: COM порт

Один порт скорость 7812 длина может меняться в зависимости от количества ошибок я знаю коды 52 ошибок убирая из этого списка взаимоисключающие ошибки получаю длину порядка 35 но это крайний случай. В любом случае нет ли возможности  получить длину получаемого сообщения? То есть написать на диаграмме некий аналог serialPort.BytesToRead

13

Re: COM порт

Длина буфера UART CANNY7 - 32 байта, т.е. за 1 цикл выполнения диаграммы может быть получено не более такого количества данных, но организовать прием более длинного сообщения (за несколько циклов выполнения диаграммы) тоже возможно, но это немного сложнее. Определить длину принятого сообщения можно с помощью соответствующего регистра драйвера UART, при этом по косвенным признакам, в данном случае, можно определить длиннее ли сообщение чем 32 байта.
Последовательная обработка данных в контроллере реализуется достаточно громоздкими диаграммами.