MSComm как принять бинарные данные?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

MSComm как принять бинарные данные?

Сообщение Dimon111 » 11.04.2013 (Чт) 16:39

Пока работал с FTDI, всё шло ОК. Теперь данные передаются через RS485 драйвер, который подключается к обычному COM порту.

Итак, открываю порт:
Код: Выделить всё
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False  'Закрыть COM - порт
With MSComm1                                              '
.Handshaking = 0                                          'Связь через COM порт без Handshaking
.InputLen = 20                                            'Длина буфера приема
.InputMode = comInputModeBinary                           'Прием бинарный
.CommPort = 2                                             'Номер COM порта
.Settings = "38400,n,8,1"                                 'Установки COM порта
.SThreshold = 10                                           'Число байт передачи для срабатывания события
.RThreshold = 10                                           'Число байт приема для срабатывания события
End With                                                  '
MSComm1.PortOpen = True                                   'Открыть com - порт


Порог - 10 байт для теста. Приёмный массив объявлен глобально Dim FT_Mass(1 To 10) As Byte

В OnComm() пытаюсь прочитать:

Код: Выделить всё
Private Sub MSComm1_OnComm()                                'Срабатывание события COM порта
If MSComm1.CommEvent <> comEvReceive Then Exit Sub      'Если событие не прием - выход
FT_Mass = MSComm1.Input                         'Читать принятое количество байт


И вот на последней строчке получаю ошибку компиляции:
---------------------------
Microsoft Visual Basic
---------------------------
Ошибка компиляции:

Can't assign to array
---------------------------
ОК Справка
---------------------------


Понимаю что нельзя просто передать данные с буфера MSCOmm в приёмный буфер, но как их тогда принять?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: MSComm как принять бинарные данные?

Сообщение Хакер » 11.04.2013 (Чт) 17:27

Как всё плохо, а...

Если преодолевая немыслимое сопротивление, оставить все остальные косяки неозвученными, то я могу сказать только следующее:

Помедитируй над этим кодом:
Код: Выделить всё
    Dim b_fixed(0 To 10) As Byte
    Dim b_dynamic() As Byte
   
    b_dynamic = b_fixed
    b_fixed = b_dynamic
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: MSComm как принять бинарные данные?

Сообщение Dimon111 » 11.04.2013 (Чт) 20:56

Хакер писал(а):Как всё плохо, а...

Если преодолевая немыслимое сопротивление, оставить все остальные косяки неозвученными, то я могу сказать только следующее:

Помедитируй над этим кодом:
Код: Выделить всё
    Dim b_fixed(0 To 10) As Byte
    Dim b_dynamic() As Byte
   
    b_dynamic = b_fixed
    b_fixed = b_dynamic

Ну да. Я пришёл сюда за очередной загадкой. А то мне их мало...

Что ж. Буду копать в этом направлении.


[Хакер] :: Ты с прошлого раза не понял что такое оверквотинг? Ты будешь продолжать нарушать правила форума, делая оверквотинг? Назло или в силу простой глупости?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: MSComm как принять бинарные данные?

Сообщение Хакер » 11.04.2013 (Чт) 21:18

Dimon111 писал(а):Ну да. Я пришёл сюда за очередной загадкой.

Неужели нехватает сообразительности понять, что массив фиксированной длины может быть присвоен массиву нефиксированной длины, но не наоборот?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: MSComm как принять бинарные данные?

Сообщение ger_kar » 12.04.2013 (Пт) 11:14

Dimon111 писал(а):Приёмный массив объявлен глобально Dim FT_Mass(1 To 10) As Byte
Я еще с прошлого раза заметил, что у Dimon111 прямо таки патологическая страсть к статическим массивам или наоборот жуткая нелюбовь к динамическим. Даже там, где явно необходим динамический массив, все равно применяется статический. Интересно почему к динамическим такая нелюбовь.
Бороться и искать, найти и перепрятать

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: MSComm как принять бинарные данные?

Сообщение Dimon111 » 12.04.2013 (Пт) 22:15

Загадки приходится отгадывать.

Возможно в выражении
FT_Mass = MSComm1.Input 'Читать принятое количество байт


массив должен быть динамическим. Сейчас у меня нет возможности проверить. Попробую в понедельник, отпишусь.

Penumbra
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 24.01.2009 (Сб) 13:36

Re: MSComm как принять бинарные данные?

Сообщение Penumbra » 14.04.2013 (Вс) 1:42

Dimon111 писал(а):Загадки приходится отгадывать.

Возможно в выражении
FT_Mass = MSComm1.Input 'Читать принятое количество байт


массив должен быть динамическим. Сейчас у меня нет возможности проверить. Попробую в понедельник, отпишусь.

это все конечно интересно, но MSComm1.Input возврат строку символов из буфера приема но не как не массив байт

делай так
Код: Выделить всё
Dim Buffer As String
Buffer  = MSComm1.Input
Buffer = StrConv(Buffer, vbUnicode)
If Len(Buffer) =10 Then
for i = 1 To 10
FT_Mass(i)= Mid(Buffer, i, 1)
Next
end if

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: MSComm как принять бинарные данные?

Сообщение Хакер » 14.04.2013 (Вс) 1:56

Penumbra, Прежде чем давать невероятно глупые и анти-правильные советы, надо разобраться в ситуации.
Понятно, что время позднее, но, тем не менее.

Во-первых, в VB6 свободно можно присваивать строку байтовому массиву и наоборот.
Код: Выделить всё
    Dim ba() As Byte
    ba = "hello"

    Dim s As String
    s = ba


Ты наверное не знал об этом, иначе бы не написал тот неописуемо отвратительный код. Побайтовый перебор строки и заполнение соответствующего массива — это расстрельная вещь. Правда.

Во-вторых, мало того, что твой код отвратителен и убог, он ещё и просто функционально неправилен: ты забыл написать там Asc. Ибо Mid возвращает строку Mid возвращает Variant-значение с подтипом VT_BSTR (то есть вариант, хранящий строчку, хранящую один символ, итого 24 байта на один паршивый байтик изначальных данных), а у автора FT_Mass — это байтовый, а не стринговый массив. Так что на строке FT_Mass(i)= Mid(Buffer, i, 1) будет генерироваться в «Type mismatch» с вероятностью ~96.07%

Ну и в-третьх, помимо того, что в высказывании «но MSComm1.Input возврат строку символов из буфера приема но не как не массив байт» надо было с точки зрения русского языка написать «никак не» а не «не как не», это высказывание просто напросто нифига не правильное. Потому что MSComm умеет возвращать через это свойство и строку, и байтовый массив. И что возвращается — зависит от режима. А режим, — автор сказал, — него выставляется именно бинарный, так что возвращается именно байтовый массив.

Жестко и разгромно прошёлся?
Ну так надо же хоть чуть-чуть думать, прежде чем писать сообщение с кучей смысловой ерунды.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: MSComm как принять бинарные данные?

Сообщение Dimon111 » 15.04.2013 (Пн) 12:10

Ок. Пытался я запихнуть данные в кольцевой буфер. Наверно опять накосячил.

Код: Выделить всё
Private Sub MSComm1_OnComm()
Dim AmounRxBuf As Long, J As Integer, I As Integer
If MSComm1.CommEvent <> comEvReceive Then Exit Sub
FT_Mass = MSComm1.Input
For I = LBound(FT_Mass) To 9
'On Error GoTo 78
RingBuf(RXTail) = FT_Mass(I)
RXTail = RXTail + 1
RXCount = RXCount + 1
If RXTail = UBound(RingBuf) Then RXTail = LBound(RingBuf)
Next


FT_Mass объявлен как динамический, глобальный.
Код: Выделить всё
Dim FT_Mass() As Byte


Порог в MSComm - 10 байт:

Код: Выделить всё
MSComm1.InputLen = 10


Несмотря на то, что порог выставлен 10 байт, цикл
Код: Выделить всё
For I = LBound(FT_Mass) To 9
десятку не берёт. Выдаёт ошибку диапазона в строке:

Код: Выделить всё
RingBuf(RXTail) = FT_Mass(I)


На время выставил Option Base 0, ибо выдаёт ошибку нижней границы в той же строке. Чего - то не понимаю я в границах. Вроде команда FT_Mass = MSComm1.Input должна копировать в FT_Mass с 1-го по 10-й байт. Тогда и цикл должен быть с 1-го по 10-й байт...

Работает, но теряет пакеты.
Последний раз редактировалось Dimon111 15.04.2013 (Пн) 13:13, всего редактировалось 3 раз(а).

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 15.04.2013 (Пн) 12:23

Dimon111 писал(а):
Код: Выделить всё
For I = LBound(FT_Mass) To 9
Next 'For I = LBound(FT_Mass) To lngBytesRetuned

Не кажется, что нелогично?

Dimon111 писал(а):
Код: Выделить всё
For I = LBound(FT_Mass) To lngBytesRetuned

Число возвращённых байт - это число итерайий цикла, так что в таком виде цикл неверный.

Dimon111 писал(а):
Код: Выделить всё
'On Error GoTo 78

:(

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re:

Сообщение Dimon111 » 15.04.2013 (Пн) 12:26

Qwertiy писал(а):
Dimon111 писал(а):
Код: Выделить всё
For I = LBound(FT_Mass) To 9
Next 'For I = LBound(FT_Mass) To lngBytesRetuned

Не кажется, что нелогично?

Может Вы не обратили внимания на " ' " после Next?
Убрал комментарии.
Последний раз редактировалось Dimon111 15.04.2013 (Пн) 12:30, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 15.04.2013 (Пн) 12:30

Dimon111 писал(а):Может Вы не обратили внимания на " ' " после Next?

Именно на него я внимание и обратил.

Dimon111 писал(а):Это комментарий. ОК. Сейчас я их уберу.

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

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: MSComm как принять бинарные данные?

Сообщение Dimon111 » 15.04.2013 (Пн) 14:25

О как!
Несмотря на то, что ставлю Option Base 1, OutLog LBound(FT_Mass) выдаёт 0!

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: MSComm как принять бинарные данные?

Сообщение Dimon111 » 15.04.2013 (Пн) 14:43

Всё. Получилось. Вот код.

Инициализация:

Код: Выделить всё
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False 'Закрыть COM - порт
    With MSComm1                                            '
    .Handshaking = 0                                        'Связь через COM порт без Handshaking
    .InputLen = 105                                         'Длина буфера приема
    .InputMode = comInputModeBinary                         'Прием бинарный
    .CommPort = 5                                           'Номер COM порта
    .Settings = "9600,n,8,1"                                'Установки COM порта
    .SThreshold = 100                                       'Число байт передачи для срабатывания события
    .RThreshold = 100                                       'Число байт приема для срабатывания события
    End With                                                '
    MSComm1.PortOpen = True                                 'Открыть com - порт


Приём:


Код: Выделить всё
FT_Mass = MSComm1.Input                         'Читать принятое количество байт
For I = 0 To UBound(FT_Mass)                    'Для каждого принятого символа:
On Error GoTo 78                            'Обработчик возможной ошибки
'On Error Resume Next
RingBuf(RXTail) = FT_Mass(I)                'Записываем принятый байт в кольцевой буфер
RXTail = RXTail + 1                         'Индекс хвоста буфера. Для записи в буфер
RXCount = RXCount + 1                       'Число записаных(увеличивается) / прочитаных(уменьшается) байт
If RXTail = UBound(RingBuf) Then RXTail = LBound(RingBuf)
Next                                            'For I = 0 To UBound(FT_Mass)



Почему нижняя граница FT_Mass = 0 при Option Base 1 осталось для меня загадкой. Пакеты не теряются.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 15.04.2013 (Пн) 15:07

Dimon111 писал(а):Почему нижняя граница FT_Mass = 0 при Option Base 1 осталось для меня загадкой. Пакеты не теряются.

Потому что он внешний и Option Base на него не влияет.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: MSComm как принять бинарные данные?

Сообщение ger_kar » 15.04.2013 (Пн) 17:58

Qwertiy писал(а):Потому что он внешний и Option Base на него не влияет.
Поэтому надо привыкать, что индексы массивов (если нет каких то особых требований) правильно начинать с 0 а не с 1.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: MSComm как принять бинарные данные?

Сообщение Хакер » 15.04.2013 (Пн) 18:02

ger_kar писал(а):Поэтому надо привыкать, что индексы массивов (если нет каких то особых требований) правильно начинать с 0 а не с 1.

В корне неправильный совет.
Правильный совет: на надо надеяться, что индекс массива всегда 0 или всегда 1 (не смотря на наличие Option Base). Надо всегда пользоваться LBound/UBound.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: MSComm как принять бинарные данные?

Сообщение ger_kar » 15.04.2013 (Пн) 20:42

Хакер писал(а):В корне неправильный совет.
Совет в корне правильный :) Только я имел ввиду несколько иное, а не то, о чем ты написал. Твой совет касается начала работы с массивом. И в этом я полностью с тобой согласен и сам всегда следую этому правилу и даже больше, я всегда начинаю с проверки массива на инициализировать. Особенно если это функция принимающая массив в качестве параметра, ну или как в случае описанном в этой теме. А мой совет был направлен на то, чтобы человек себя переборол и нормально воспринимал систему отчета, которая начинается не с привычной единицы, а с нуля. Т.е. он такую систему должен воспринимать как само собой разумеющееся, так сказать на "автомате", иначе в коде будет море ошибок, и не только с границами массивов. А для того, что бы к этому привыкнуть надо свои массивы (если нет каких то особых требований) начинать индексировать с нуля. Я например по началу ( а это было ох как давно) тоже никак не воспринимал такую систему отчета. Ну что за фигня такая - начинать с нуля думал я, и ругал нехорошими словами тех, кто это придумал. Но потом программирую на ассемблере и вообще столкнувшись с указателями и смещениями, меня осенило насколько это правильно и удобно. И после этого глубокого осознания, мой разум таки стал нормально воспринимать систему отчета, начинающуюся с нуля. И у автора этой темы похоже аналогичная проблема. Причем это я заметил по предыдущей теме, когда мы его дружно убеждали передавать в функцию указатель на начало байтового массива.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: MSComm как принять бинарные данные?

Сообщение Хакер » 15.04.2013 (Пн) 20:57

ger_kar писал(а):А мой совет был направлен на то, чтобы человек себя переборол и нормально воспринимал систему отчета, которая начинается не с привычной единицы, а с нуля.


А он нормально воспринимает, возможно. Откуда ты знаешь, как он её воспринимает? И опять же равняешься на себя, вспоминая, как это было у тебя.
В точности как в предыдущем топике, где ты за весь мир утверждал, что никому не нужна передача выражения New SomeClass как параметра функции.

Думаешь, массивы, начинающиеся с 1, придумали для того, чтобы угадить тем, кому неприятна идея массивов, начинающихся с нуля? Наверняка я угадал. И это величайшее заблуждение.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 15.04.2013 (Пн) 21:19

ger_kar писал(а): Но потом программирую на ассемблере и вообще столкнувшись с указателями и смещениями, меня осенило насколько это правильно и удобно. И после этого глубокого осознания, мой разум таки стал нормально воспринимать систему отчета, начинающуюся с нуля.

Нет ничего, что было бы удобно всегда. Удобство зависит от ситуации, например, для шахматного поля удобна нумерация с -2 или -1, а для дерева отрезков - с 1.

Хакер писал(а):В точности как в предыдущем топике, где ты за весь мир утверждал, что никому не нужна передача выражения New SomeClass как параметра функции.

Хм.. Я понимаю, зачем это может быть нужно при наличии параметров конструктора, но вот без параметров, т. е. нужно тупо передать стандартный объект, который нам больше не нужен. Правда, а зачем?

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re:

Сообщение NashRus » 15.04.2013 (Пн) 22:10

Qwertiy писал(а):Хм.. Я понимаю, зачем это может быть нужно при наличии параметров конструктора, но вот без параметров, т. е. нужно тупо передать стандартный объект, который нам больше не нужен. Правда, а зачем?


Например, чтобы связность уменьшить и вызвать функцию с таким прототипом Function BaseSomeFunc(o as IBaseSome)

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: MSComm как принять бинарные данные?

Сообщение ger_kar » 16.04.2013 (Вт) 7:10

Хакер писал(а):А он нормально воспринимает, возможно. Откуда ты знаешь, как он её воспринимает?
Если бы ему было удобно и привычно считать с 0, то он бы индексацию своих массивов начинал 0 и не использовал Option Base 1, потому, как никаких других причин использования в этой ситуации не усматривается. А вообще зачем гадать, нужно просто это спросить у Dimon111 :) Хотя я уверен, что прав. Привычка, такая штука, которую очень трудно переломить. Если человек всегда считал с 1 и привык к этому, то систему отсчета с нуля он будет воспринимать примерно так же, как ты бы воспринимал написание кода кириллицей. Хотя для программеров 1С это вполне обычная вещь.
Хакер писал(а):И опять же равняешься на себя, вспоминая, как это было у тебя.
Уверен, что это свойственно всем людям. Имеется ввиду ломка связанная с преодолением привычки. У кого то она больше у кого-то меньше, но само явление присуще абсолютно всем нормальным людям.
Qwertiy писал(а):Нет ничего, что было бы удобно всегда. Удобство зависит от ситуации
Согласен. И в данной ситуации, для человека, у которого "система отсчета с 1" = "системе отсчета с 0", никогда бы начало индексации массивов не перенастраивал на 1 без особых на то причин (технического, а не психологического свойства).
Qwertiy писал(а):для шахматного поля удобна нумерация с -2 или -1
Как это? Что то не очень представляю удобство такой системы для шахмат :).
NashRus писал(а):Например, чтобы связность уменьшить и вызвать функцию с таким прототипом Function BaseSomeFunc(o as IBaseSome)
Если честно, то я из сказанного нифига не понял :)
Бороться и искать, найти и перепрятать

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 16.04.2013 (Вт) 8:02

ger_kar писал(а):
Qwertiy писал(а):для шахматного поля удобна нумерация с -2 или -1
Как это? Что то не очень представляю удобство такой системы для шахмат :).

На самом деле, я имел в виду задачу об обходе поля конём. Делаем 8 клеток поля в обычной индексации (0 to 7 или 1 to 8) и окружаем всё поле 2 рядами клеток, помеченных как посещённые, и получается -2 to 9 или -1 to 10.

ger_kar писал(а):
NashRus писал(а):Например, чтобы связность уменьшить и вызвать функцию с таким прототипом Function BaseSomeFunc(o as IBaseSome)
Если честно, то я из сказанного нифига не понял :)

Я понял, но мне это не очень нравится...
Есть интерфейс, объявляющий некоторый набор методов. Функция с какой-то целью использует эти методы.
Соответственно, единственное различие окажется в типе параметра, т. е. передавая различные классы, реализующие данный интерфейс, мы получаем различное поведение функции, а сам передаваемый объект нужен только функции, но не вне её.
А не нравится потому, что такое использование означает, что передаваемый класс - это только способ группировки методов без любых наших данных внутри. Т. е. при использовании методов он все необходимые данные получает из вызывающей функции. Не могу тут за что-то зацепиться для обоснования, но мне кажется, что это перебор в применении паттернов...

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: MSComm как принять бинарные данные?

Сообщение Dimon111 » 16.04.2013 (Вт) 10:30

ger_kar писал(а):А вообще зачем гадать, нужно просто это спросить у Dimon111

Я на АСМЕ 8051 с детства пишу. Начинал с АСМ 580ВМ80. Программировал РК-86, Орион - 128. Потом перешёл на мелкие поделки на 89с31, 89с51. Всё на АСМЕ.

Мои мелкие проекты:
Комбинированный прибор радиолюбителя. Плис + 89S8252
http://www.530.ru/electronics/projects.php?do=p125
Зарядное устройство для малогабаритных аккумуляторов с индикацией напряжения и тока.
http://www.530.ru/electronics/projects.php?do=p118
Блок персонального вызова.
http://www.530.ru/electronics/projects.php?do=p113
Блок жизнеобеспечения аквариума.
http://www.530.ru/electronics/projects.php?do=p107
Автомобильный тахометр.
http://www.530.ru/electronics/projects.php?do=p104
Автомобильная сигнализация с радиоканалом, плавающим кодом и домашним комплектом для мониторинга состояния датчиков.
Причём плавающий код Keeloq был переложен с PIC на 8051 ассемблер
http://www.530.ru/electronics/projects.php?do=p103

Есть проект бортового компьютера для Ваз-2114. Все параметры работы двигателя (21), 2 счётчика расхода топлива, дампы ответов по интерфейсу K-Line, напряжение Б/С, просадка напряжения во время пуска двигателя, ток стартера и многое другое. 37кб кода. Всё на АСМЕ 89c51ED2.

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

Но ASM это не единственная среда. Keil C для SAM7s, AVR Studio, CV AVR, Keil 8051, MAX+II для ПЛИС Altera. Я этим зарабатываю себе на жизнь...

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: MSComm как принять бинарные данные?

Сообщение ger_kar » 16.04.2013 (Вт) 12:56

Dimon111 писал(а): Начинал с АСМ 580ВМ80. Программировал РК-86,
Я кстати тоже. РК-86 Был моим первым компьютером собранным из конструктора :) . Орион не юзал, зато хорошо поюзал "Корвет".
Dimon111 писал(а):Просто меня тут представляют каким - то сосунком, аж обидно.
По этому поводу вообще то никаких высказываний не было. И спрашивал я относительно системы отсчета начинающейся с нуля, а не с единицы. Единственные выводы, которые сделал я и о которых собственно и высказался, так это то, что Dimon111 не любит динамические массивы и индексы начинающиеся с нуля. Это скорее вопрос привычки. Я например из-за этого органически не перевариваю Windows 7 и новые Office (2007-2010). Ибо все в этих продуктах мне жутко непривычно. Кстати я даже к меню Windows XP так и не привык, благо, что его можно настроить на старый манер, как это было в до XP'шных системах.
Dimon111 писал(а):Да, я самоучка, никто меня программировать не учил. Поэтому и есть дыры в познаниях.
Аналогично :).
Dimon111 писал(а):Keil C для SAM7s, AVR Studio, CV AVR, Keil 8051, MAX+II для ПЛИС Altera
Я например об этом не имею не малейшего представления :)
Бороться и искать, найти и перепрятать

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: MSComm как принять бинарные данные?

Сообщение Dimon111 » 16.04.2013 (Вт) 14:36

ger_kar писал(а):
Dimon111 писал(а): Единственные выводы, которые сделал я и о которых собственно и высказался, так это то, что Dimon111 не любит динамические массивы и индексы начинающиеся с нуля.

Да нет, мне вобщем - то безразлично с 1 или с 0. Единственное правило - по возможности везде одинаково. Просто пишу я софт в несколько этапов. Сначала отлавливаю и устраняю косяки и потом уже причёсываю и оптимизирую. Рабочий софт оптимизировать проще. Потому как если он в результате становится нерабочим - сразу понимаешь что накосячил.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: MSComm как принять бинарные данные?

Сообщение ger_kar » 16.04.2013 (Вт) 15:48

Ну вот и прояснили :)
Бороться и искать, найти и перепрятать


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 76

    TopList