#1
shukhrat
-
- Пользователи
-
-
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
-
- Пользователи
-
-
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
-
- Пользователи
-
-
10
- 20 сообщений
- 0 thanks
Новичок
Отправлено 21 January 2017 — 22:50
к сети подключен, айпи не получал. перепаял com кабель.перепрошить получилось.
- Наверх
Содержание
- Функция ClearCommError
- Странное поведение функции ClearCommError
- 31.10.2017
- ClearCommError function (winbase.h)
- Syntax
- Parameters
- Return value
- Remarks
- 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 |
|
||
Код |
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
На момент вызова процедуры ClearCommError в буфере нет ещё ничего. Добавлено через 2 минуты и 21 секунду |
|||
|
Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.3.2013
Репутация: нет
Всего: нет
zagma |
|
||
Цитата(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
|
|
|
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] …текст программы… [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.
Полезные ссылки: FAQ Сайта
FAQ Раздела
Кладовка
Наши Исходники
API-Guide
Поиск по Разделу
MSDN Library Online
Google
Ваше мнение о модераторах: SCINER,
B.V.
Вот такая проблема с MSCOMM
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Цитата А как тут может помочь DoEvents ? Никак, DoEvents создан для совершенно других целей. Sleep замораживает поток, в вашем случае — главный поток, тоесть всю программу, графика (форма и компаненты), в VB так же находятся в главном потоке, отсюда полная заморозка приложения, а DoEvents помог бы, например, если бы вы использовали бесконечный цикл, или подобный расчёт в теле основого потока, но, DoEvents надо посылать не единожды, а каждый раз когда вы хотите чтобы компоненты и форма получали системные события. do DoSomethink ‘… какой то расчёт или действие, занимающее небольшой промежуток времени, если по времени эта команда долгая, есть вероятность, что даже DoEvents, который находится ниже — не даст нужного результата… Таковы реалии VB DoEvents loop Постараюсь скачать NanoVB, хотя бы посмотреть на Comm-компонент, а то забыл уже всё |
GeoSoftUa |
|
Junior Рейтинг (т): нет |
Цитата hclubmk @ 16.03.16, 18:47 См. Структура COMMTIMEOUTS + Может вы не заметили, но я работаю через MSCOMM, а НЕ напрямую , через API. В MSCOMM этой возможности нет. Добавлено 17.03.16, 10:02 Цитата VisualProg @ 17.03.16, 06:28 …а каждый раз когда вы хотите чтобы компоненты и форма получали системные события.
Благодарю. Сообщение отредактировано: GeoSoftUa — 17.03.16, 10:10 |
hclubmk |
|
Junior |
Цитата GeoSoftUa @ 17.03.16, 09:57 Может вы не заметили, но я работаю через MSCOMM, а НЕ напрямую , через API. В MSCOMM этой возможности нет. Это принципиальная позиция — не использовать API? Если нет — то что мешает это применить к MSCOMM? Сообщение отредактировано: hclubmk — 17.03.16, 10:39 |
VisualProg |
|
Код у меня получился не большим 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 |
|
Junior Рейтинг (т): нет |
Цитата hclubmk @ 17.03.16, 10:36 Это принципиальная позиция
Нет, конечно. Цитата VisualProg @ 17.03.16, 12:10 Получается ли в вашем коде нечто подобное?
Если коротко, то именно так у меня и написаны процедуры. Цитата VisualProg @ 17.03.16, 12:10 И можете пояснить, для чего вам таймер и счётчик? Это для себя. На время отладки смотреть что происходит и где затык. Хотели простыню посмотреть? Вот она 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 |
|
Junior |
Цитата GeoSoftUa @ 18.03.16, 18:22 Нет, конечно. Тогда как-то так: 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 |
|
Junior Рейтинг (т): нет |
Цитата hclubmk @ 20.03.16, 07:59 Подробное описание параметров найдешь
Я так понял, что проблема не в моем коде, а в параметрах передачи. |
hclubmk |
|
Junior |
На самом деле вариантов может быть достаточно много. Предложенный — как один из возможных. Мануал и сниффер у тебя есть, а так гадать на кофейной гуще -дело мало-благодарное. Единственное, что посоветовал бы — уходить от MSCOMM. Ведет он себя порой непредсказуемо — приходилось помучиться. Погугли PComm lite -вполне надежный и бесплатный инструмент. |
GeoSoftUa |
|
Junior Рейтинг (т): нет |
Цитата hclubmk @ 20.03.16, 16:51 что посоветовал бы — уходить от MSCOMM. Ведет он себя порой непредсказуемо — приходилось помучиться.
И , кажется, это мой случай |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Visual Basic: Общие вопросы
- Следующая тема
[ Script execution time: 0,0484 ] [ 16 queries used ] [ Generated: 10.02.23, 03:53 GMT ]