The hardware detected a framing error

Проблема После Прошивки D800 Hd Pvr - отправлено в Dreambox: ребята нужна помощь. Решил перепрошить  д800 хд пвр. результат плочевный. на дисплее пишет Sim201 team #84B www.dm800sim2.com ERROR! NO CA FOUND, что делать? dream up выдает COM: The hardware detected a framing error. COM: The hardware detected a break condition. COM: The hardware detected a break condition. COM: The hardware detected a break condition. COM: The hardware detected a break condition. COM: The hardware detected...

#1

shukhrat

    Новичок

  • Пользователи
  • PipPip

  • 10

  • 20 сообщений
  • 0 thanks

Отправлено 20 January 2017 — 21:31

ребята нужна помощь. Решил перепрошить  д800 хд пвр. результат плочевный. на дисплее пишет

«Sim201 team

#84B

www.dm800sim2.com

ERROR! NO CA FOUND»,

что делать?

dream up выдает COM: The hardware detected a framing error.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

COM: The hardware detected a break condition.

заливал имидж впервые. походу не то загнал.Помогите.

  • Наверх


#2


sokil1979

sokil1979

    Продвинутый пользователь

  • Пользователи
  • PipPipPip

  • 3

  • 94 сообщений
  • 0 thanks

Отправлено 20 January 2017 — 23:45

если подключен к сети и получает ip , то  можно прошить чере веб браузер http://www.satavto.b…box_800_hd.html

GI ET-1100 4K , wikardd _0.8W, 4W, 4,8E, 9E, 13W, 19E, 28E, 36E

  • Наверх


#3


shukhrat

shukhrat

    Новичок

  • Пользователи
  • PipPip

  • 10

  • 20 сообщений
  • 0 thanks

Отправлено 21 January 2017 — 22:50

к сети подключен, айпи не получал. перепаял com кабель.перепрошить получилось. 

  • Наверх


Содержание

  1. Функция ClearCommError
  2. Странное поведение функции ClearCommError
  3. 31.10.2017
  4. ClearCommError function (winbase.h)
  5. Syntax
  6. Parameters
  7. Return value
  8. Remarks
  9. Clearcommerror failed winapi error 22

Функция ClearCommError

Функция ClearCommError извлекает информацию об коммуникационной ошибке и сообщает о текущем состоянии коммуникационного устройства. Функция вызывается тогда, когда происходит ошибка обмена информацией и сбрасывает флажок ошибки устройства, чтобы включить в работу дополнительные операции ввода и вывода данных (I/O).

[in] Дескриптор коммуникационного устройства. Функция CreateFile возвращает этот дескриптор.

[out] Указатель на переменную, которая составляет маску, указывающую тип ошибки. Этот параметр может состоять из одного или нескольких ниже перечисленных значений.

Значение Предназначение
CE_BREAK Аппаратные средства обнаружили условие прерывания.
CE_DNS Windows Me/98/95: Параллельное устройство не выбрано.
CE_FRAME Аппаратные средства обнаружили ошибку кадровой синхронизации.
CE_IOE Ошибка ввода — вывода (I/O) произошла в ходе обмена информацией с устройством.
CE_MODE Затребованный режим не поддерживается, или недопустим параметр hFile. Если это значение устанавливается, то это — единственная допустимая ошибка.
CE_OOP Windows Me/98/95: Параллельное устройство сообщило, что оно является за пределами листа бумаги.
CE_OVERRUN Произошло переполнение буфера символов. Следующий символ потерялся.
CE_PTO Windows Me/98/95: Произошел перерыв в работе на параллельном устройстве.
CE_RXOVER Произошло переполнение буфера ввода данных. Или нет места в буфере ввода данных, или символ был получен после метки конца файла (EOF).
CE_RXPARITY Аппаратные средства обнаружили ошибку четности.
CE_TXFULL Приложение пыталось передать символ, но буфер вывода данных был заполнен.

Если функция завершается успешно, возвращаемое значение не нуль.

Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

Если коммуникационный порт установлен со значением ИСТИНА (TRUE) в члене fAbortOnError структуры установки программы DCB, коммуникационная программа завершит работу всех операций чтения и записи на коммуникационном порте, когда происходит коммуникационная ошибка. Новые операции чтения или записи не должны допускаться до тех пор, пока прикладная программа не опознает коммуникационную ошибку при помощи вызова функция ClearCommError.

Функция ClearCommError заполняет буфер состояния, на который указывает параметр lpStat текущим состоянием коммуникационного устройства, определенного параметром hFile.

Размещение и совместимость ClearCommError

Источник

Странное поведение функции ClearCommError

31.10.2017

Некоторое время назад при работе над одной программой я столкнулся с необычным поведением функции ClearCommError. Задача была довольно простой: есть прибор, от которого по COM порту принимаются данные. Вроде бы ничего сложного, но меня ждал подвох.

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

Какого же было мое удивление, когда я обнаружил, что он не работает. Точнее работает, но крайне нестабильно. Почему? во время отладки выяснилось, что проблема в функции ClearCommError, которая неправильно заполняла структуру COMSTAT. Точнее она неправильно определяла размер данных, поступивших в порт. Прибор, от которого я принимал данные, работал с известной частотой, размер данных отправляемых им за один раз также известен. Поэтому оценить сколько должно приходить — не проблема. Функция ClearCommError на разных итерациях определяла размер принятых байт то в 4096, то в 2, то в 3 байта. Неслабый разброс. Может я делаю что-то не так?

Согласно документации функция ClearCommError предназначена для сброса ошибки COM порта. Может быть для определения размера полученных данных нужно использовать какую-то другую функцию? Я полез в Интернет. Но ничего не нашел. Во всех найденных мною примерах размер полученных данных определялся именно этой функцией. Других функций нет. Так в чем дело?

Поиск в Интернете все-таки дал свои плоды. Оказывается я не первый кто столкнулся с такой проблемой. ее обсуждение можно найти на форуме vingrad (ссылка). К сожалению, красивого решения найти не удалось. Поэтому пришлось использовать функцию ClearCommError в цикле. Пример кода:

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

Источник

ClearCommError function (winbase.h)

Retrieves information about a communications error and reports the current status of a communications device. The function is called when a communications error occurs, and it clears the device’s error flag to enable additional input and output (I/O) operations.

Syntax

Parameters

A handle to the communications device. The CreateFile function returns this handle.

[out, optional] lpErrors

A pointer to a variable that receives a mask indicating the type of error. This parameter can be one or more of the following values.

Value Meaning
CE_BREAK 0x0010 The hardware detected a break condition.
CE_FRAME 0x0008 The hardware detected a framing error.
CE_OVERRUN 0x0002 A character-buffer overrun has occurred. The next character is lost.
CE_RXOVER 0x0001 An input buffer overflow has occurred. There is either no room in the input buffer, or a character was received after the end-of-file (EOF) character.
CE_RXPARITY 0x0004 The hardware detected a parity error.

В

The following values are not supported:

[out, optional] lpStat

A pointer to a COMSTAT structure in which the device’s status information is returned. If this parameter is NULL, no status information is returned.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

If a communications port has been set up with a TRUE value for the fAbortOnError member of the setup DCB structure, the communications software will terminate all read and write operations on the communications port when a communications error occurs. No new read or write operations will be accepted until the application acknowledges the communications error by calling the ClearCommError function.

The ClearCommError function fills the status buffer pointed to by the lpStat parameter with the current status of the communications device specified by the hFile parameter.

Источник

Clearcommerror failed winapi error 22

Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.3.2013

Репутация: нет
Всего: нет

Помогите пожалуйста разобраться с ClearCommError. Вообще первый раз пытаюсь в Delphi что то делать, но необходимость нагрянула.
На com порте висит заглушка с соединёнными RX и TX. т.е. что выдаётся, то сразу попадает в буфер чтения. Запущен монитор, позволяющий всё это дело контролировать.

Смог накорябать, в меру соображения, вот это:

zagma
Дата 12.3.2013, 20:26 (ссылка) | (нет голосов) Загрузка .
Код
program writfile;

hFile :THandle;
ByteWritten : cardinal;
temp :string; // это будет отправляться
namefile:Pchar; // имя файла
COMStat: TCOMStat; // переменная для определения данных в буфере
xn: THandle;

begin
temp:=’Hello World!’; // строка для записи в файл
namefile:=’COM3′; // Имя файла для создания

hFile:= CreateFile(namefile,GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,nil,CREATE_ALWAYS,0,0); // Открывается порт

WriteFile(hFile, temp[1], Length(temp),ByteWritten, nil); // пишется строка в порт

ClearCommError(hFile,xn,@COMStat); //получаем состояние COM в StatCOM
xn:=COMStat.cbInQue; // в cblnQue должно вроде быть количество байтов в буфере

ShowMessage(IntTostr(xn)) ; // показывается сколько ж там чего — ДЫРКА ТАМ . НОЛЬ

ReadFile(hFile,MyBuff,SizeOf(MyBuff),ByteReaded,Nil); // строка из буфера считывается . ВПОЛНЕ ОДУШЕВЛЁННАЯ .

Может подскажете, что я не так сделал (или не сделал). Показывает cblnQue = 0, когда в буфере 12 байт.

northener
Дата 12.3.2013, 20:49 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20

Цитата(zagma @ 12.3.2013, 20:26 )
Может подскажете, что я не так сделал (или не сделал). Показывает cblnQue = 0, когда в буфере 12 байт.

На момент вызова процедуры ClearCommError в буфере нет ещё ничего.
А функция ReadFile будет ждать пока не прочитает что-то из буфера, либо пока не истечет установленный таймаут.

Добавлено через 2 минуты и 21 секунду
Вот неплохая статья по работе с СОМ-портом:
Работа с СОМ-портом в Windows (W9x, W2k)

Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.3.2013

Репутация: нет
Всего: нет

zagma
Дата 12.3.2013, 21:10 (ссылка) | (нет голосов) Загрузка .
Цитата(zagma @ 12.3.2013, 20:26 )
Может подскажете, что я не так сделал (или не сделал). Показывает cblnQue = 0, когда в буфере 12 байт.

На момент вызова процедуры ClearCommError в буфере нет ещё ничего.
А функция ReadFile будет ждать пока не прочитает что-то из буфера, либо пока не истечет установленный таймаут.

Добавлено @ 20:51
Вот неплохая статья по работе с СОМ-портом:
Работа с СОМ-портом в Windows (W9x, W2k)

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

Правила форума «Delphi: Для новичков»
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »

[ Время генерации скрипта: 0.0909 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Adblock
detector

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
    Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

    Обратите внимание:
    1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
    2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
    3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
    4. Используйте теги [ code=vba ] …текст программы… [ /code ] для выделения текста программы подсветкой.
    5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
    6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

    Полезные ссылки:
    user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google


    Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.

    >
    Вот такая проблема с MSCOMM

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #16

    ,
    17.03.16, 06:28

      Цитата

      А как тут может помочь DoEvents ?

      Никак, DoEvents создан для совершенно других целей. Sleep замораживает поток, в вашем случае — главный поток, тоесть всю программу, графика (форма и компаненты), в VB так же находятся в главном потоке, отсюда полная заморозка приложения, а DoEvents помог бы, например, если бы вы использовали бесконечный цикл, или подобный расчёт в теле основого потока, но, DoEvents надо посылать не единожды, а каждый раз когда вы хотите чтобы компоненты и форма получали системные события.

      ExpandedWrap disabled

        do

        DoSomethink ‘… какой то расчёт или действие, занимающее небольшой промежуток времени, если по времени эта команда долгая, есть вероятность, что даже DoEvents, который находится ниже — не даст нужного результата… Таковы реалии VB

        DoEvents

        loop

      Постараюсь скачать NanoVB, хотя бы посмотреть на Comm-компонент, а то забыл уже всё


      GeoSoftUa



      Сообщ.
      #17

      ,
      17.03.16, 09:57

        Junior

        *

        Рейтинг (т): нет

        Цитата hclubmk @ 16.03.16, 18:47

        См. Структура COMMTIMEOUTS +

        Может вы не заметили, но я работаю через MSCOMM, а НЕ напрямую , через API. В MSCOMM этой возможности нет.

        Добавлено 17.03.16, 10:02

        Цитата VisualProg @ 17.03.16, 06:28

        …а каждый раз когда вы хотите чтобы компоненты и форма получали системные события.

        Благодарю.
        Ну я подозревал, что так оно и работает.
        Вот в циклах его и пользовал.
        И вот тут вопрос, а компонент mscomm.ocx тоже тормозится слипом? Или он в другом потоке?
        И еще, у меня почему то outbuffercount сразу после передачи показывает=0. Что, данные улетают мгновенно?

        Сообщение отредактировано: GeoSoftUa — 17.03.16, 10:10


        hclubmk



        Сообщ.
        #18

        ,
        17.03.16, 10:36

          Junior

          *

          Цитата GeoSoftUa @ 17.03.16, 09:57

          Может вы не заметили, но я работаю через MSCOMM, а НЕ напрямую , через API. В MSCOMM этой возможности нет.

          Это принципиальная позиция — не использовать API? Если нет — то что мешает это применить к MSCOMM?

          Сообщение отредактировано: hclubmk — 17.03.16, 10:39


          VisualProg



          Сообщ.
          #19

          ,
          17.03.16, 12:10

            Код у меня получился не большим

            ExpandedWrap disabled

              Private Sub OnDataArrivalEvent(ByVal data As String, ByVal length As Long)

                  Select Case data

                      Case &HFE ‘ всё хорошо

                          SendData

                      Case 1 ‘ всё плохо

                          ‘ … тут либо повторно отправляем данные, либо как то решаем проблему

                  End Select

              End Sub

              Private Sub OnTimeout()

                  ‘ тут таймаут

              End Sub

              Private Sub SendData()

                  ‘ тут выполняем отправку данных устройству

              End Sub

              Private Sub MSComm1_OnComm() ‘ все события COM порта

                  Select Case (MSComm1.CommEvent)

                      Case comEvReceive ‘ входящий трафик

                          OnDataArrivalEvent MSComm1.Input, MSComm1.InputLen ‘ перенаправляем данные в нашу процедуру

                      Case comEventTxTimeout ‘ таймаут

                          OnTimeout

                  End Select

              End Sub

            Получается ли в вашем коде нечто подобное?
            И можете пояснить, для чего вам таймер и счётчик? Возможно, они здесь вообще не нужны…


            GeoSoftUa



            Сообщ.
            #20

            ,
            18.03.16, 18:22

              Junior

              *

              Рейтинг (т): нет

              Цитата hclubmk @ 17.03.16, 10:36

              Это принципиальная позиция

              Нет, конечно.
              Чуть выше я указал, почему иду именно этим путем. Есть работающая прога.
              Посмотрел из чего она собрана, какие APIшки и компоненты применялись…
              И решил, что повторить её — дело 5 минут… однако, самонадеяность вылезла боком :oops: .

              Цитата VisualProg @ 17.03.16, 12:10

              Получается ли в вашем коде нечто подобное?

              Если коротко, то именно так у меня и написаны процедуры.
              Только я не передавал MSComm1.Input, MSComm1.InputLen в OnDataArrivalEvent, а прямо в этой процедуре
              снимал данные с MSComm1.Input -> в массив и MSComm1.InputLen в свою переменную.
              Дальше анализировал длину. Если она больше 1, то это точно ошибка, после этого проверял байт &hFE.

              Цитата VisualProg @ 17.03.16, 12:10

              И можете пояснить, для чего вам таймер и счётчик?

              Это для себя. На время отладки смотреть что происходит и где затык.

              Хотели простыню посмотреть? Вот она :). Остальные процедуры не меньше :).

              ExpandedWrap disabled

                Private Sub MSComm1_OnComm()

                On Error GoTo InputErr0

                Dim MessText As Integer

                ‘Переменная MessText не может быть пустой или без существующего индека в ресурсе

                MessText = 65 ‘ LoadResString(65) ‘ «Ошибка приёма данных!»

                Select Case MSComm1.CommEvent

                Case comEventFrame ‘Framing Error. The hardware detected a framing error.

                MessText = 60 ‘LoadResString(60) ‘»Обнаружена аппаратная ошибка кодирования.»

                GoTo InputErr

                Case comEventOverrun ‘Port Overrun. A character was not read from the hardware before the next character arrived and was lost.

                MessText = 61 ‘ LoadResString(61) ‘ «Символ не считан устройством,» & vbCrLf & «а следующий принят и потерян.»

                GoTo InputErr

                Case comEventRxOver ‘Receive Buffer Overflow. There is no room in the receive buffer.

                MessText = 62 ‘ LoadResString(62) ‘ «Переполнение буфера приёма.» ‘& vbCrLf & «Нет места в буфере приёма.»

                GoTo InputErr

                Case comEventRxParity ‘Parity Error. The hardware detected a parity error.

                MessText = 63 ‘LoadResString(63) ‘  «Обнаружена ошибка четности.»

                GoTo InputErr

                Case comEventDCB ‘Unexpected error retrieving Device Control Block (DCB) for the port.

                ‘Неожиданная ошибка при получении кода блока управления (DCB) для порта.

                MessText = 64 ‘ LoadResString(64)'»Неожиданная ошибка при получении кода блока управления (DCB) для порта.»

                GoTo InputErr

                ‘*********************************************************************

                Case comEvReceive

                ‘Process_comEvReceive_Data

                Debug.Print «comEvReceive»

                ‘Case comEvSend

                End Select

                ‘*******************************

                Exit Sub

                ‘*******************************

                InputErr0:

                MessText = 65 ‘ LoadResString(65) ‘ «Ошибка приёма данных!»

                InputErr:

                CheckEventError = True

                ProcessIndex = 0 ‘Отключение анализа полученных данных

                MSComm1.InBufferCount = 0

                Screen.MousePointer = 0

                MsgBox LoadResString(MessText) & vbCrLf & Error$(Err.Number), vbCritical + vbOKOnly

                End Sub


              hclubmk



              Сообщ.
              #21

              ,
              20.03.16, 07:59

                Junior

                *

                Цитата GeoSoftUa @ 18.03.16, 18:22

                Нет, конечно.

                Тогда как-то так:

                ExpandedWrap disabled

                  Public Declare Function SetCommTimeouts Lib «kernel32» (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As Long

                  Public Type COMMTIMEOUTS

                          ReadIntervalTimeout As Long

                          ReadTotalTimeoutMultiplier As Long

                          ReadTotalTimeoutConstant As Long

                          WriteTotalTimeoutMultiplier As Long

                          WriteTotalTimeoutConstant As Long

                  End Type

                  Private CommTO As COMMTIMEOUTS

                  CommTO.ReadIntervalTimeout = &HFFFFFFFF

                  CommTO.ReadTotalTimeoutMultiplier = 0

                  CommTO.ReadTotalTimeoutConstant = 0

                  CommTO.WriteTotalTimeoutMultiplier = 0

                  CommTO.WriteTotalTimeoutConstant = 1000

                  SetCommTimeouts MSComm1.CommID, CommTO

                Подробное описание параметров найдешь по ссылке выше

                Сообщение отредактировано: hclubmk — 20.03.16, 08:29


                GeoSoftUa



                Сообщ.
                #22

                ,
                20.03.16, 15:42

                  Junior

                  *

                  Рейтинг (т): нет

                  Цитата hclubmk @ 20.03.16, 07:59

                  Подробное описание параметров найдешь

                  Я так понял, что проблема не в моем коде, а в параметрах передачи.
                  Т.е. мне надо переключиться в асинхронный режим. Так?


                  hclubmk



                  Сообщ.
                  #23

                  ,
                  20.03.16, 16:51

                    Junior

                    *

                    На самом деле вариантов может быть достаточно много. Предложенный — как один из возможных. Мануал и сниффер у тебя есть, а так гадать на кофейной гуще -дело мало-благодарное. Единственное, что посоветовал бы — уходить от MSCOMM. Ведет он себя порой непредсказуемо — приходилось помучиться. Погугли PComm lite -вполне надежный и бесплатный инструмент.


                    GeoSoftUa



                    Сообщ.
                    #24

                    ,
                    23.03.16, 17:59

                      Junior

                      *

                      Рейтинг (т): нет

                      Цитата hclubmk @ 20.03.16, 16:51

                      что посоветовал бы — уходить от MSCOMM. Ведет он себя порой непредсказуемо — приходилось помучиться.

                      И , кажется, это мой случай :). Переключил скорость обмена на порту и перестало работать даже то, что работало.
                      Всем спасибо за ответы. Буду е… хать дальше. :rolleyes:

                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                      0 пользователей:

                      • Предыдущая тема
                      • Visual Basic: Общие вопросы
                      • Следующая тема

                      Рейтинг@Mail.ru

                      [ Script execution time: 0,0484 ]   [ 16 queries used ]   [ Generated: 10.02.23, 03:53 GMT ]  

                      Понравилась статья? Поделить с друзьями:
                    • The graphics processor has encountered an unrecoverable error
                    • The graphics display components in the remote session failed to start up error code 0x12
                    • The gpu is not responding beamng drive как исправить
                    • The given key was not present in the dictionary как исправить
                    • The game needs directx 11 video card как исправить