Поврежден файл mscomm32 ocx как исправить

Обновлено: 02.07.2024

Использование элемента управления MSCOMM32.OCX в среде Win7

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

В ходе испытания было установлено, что последовательный порт нельзя использовать в среде Win7 (ошибка 8015 --- Не удалось установить состояние связи . ). Последовательный порт компьютера не работает? Чтобы определить проблему, компьютер восстановил образ XP. С программным обеспечением проблем нет, что указывает на исправность последовательного порта. Подозревается, что это проблема с драйвером последовательного порта (хотя устройство отображается как нормальное в управлении устройством), и оно было восстановлено в системе Win7. Я не нашел никаких новых драйверов. Я только что установил USB на последовательный порт. После установки драйвера оборудования я могу нормально прочитать вес. , Нет проблем с оборудованием, нет проблем с программным обеспечением, кажется, что это действительно проблема с драйверами.

В ноутбуке, используемом отделом пользователя, используется 64-разрядная версия Win7. Последовательный порт нельзя использовать после регистрации. Это все равно должно быть проблемой с драйвером. Я подозреваю, что драйвер нельзя использовать в 64-разрядных системах. Ни в коем случае не переустанавливайте систему как 32-битную Win7, тестируйте последовательный порт, можно использовать, нет проблем с считыванием веса. Однако была обнаружена ошибка несоответствия типов переменных, поэтому мне пришлось установить VB6 Lite, и исходная программа отладки обнаружила, что это была ошибка при создании объекта Excel. Когда Excel был клонирован в системе, это могло быть проблемой с переменными пути или среды. Способ переустановить офис, проблема решена.

Напомним, использование элемента управления MSCOMM32.OCX

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

После регистрации найдите Microsoft Control 6.0 на детали в меню проекта VB6. Вы видите, что файл, расположенный ниже, является местоположением файла OCX, как показано ниже:


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


Приложение: Подробное объяснение использования MSComm control


Элемент управления MSComm передает и принимает данные через последовательный порт, чтобы обеспечить функции последовательной связи для приложений. Элемент управления MSComm очень удобен при программировании последовательных портов, программистам не нужно тратить время на понимание более сложных функций API, и его можно использовать в VC, VB, Delphi и других языках. Microsoft Communications (в дальнейшем именуемый MSComm) - это элемент управления ActiveX, предоставляемый Microsoft, который упрощает программирование последовательной связи под Windows и предоставляет приложениям простой способ отправлять и получать данные через последовательный интерфейс. В частности, он предоставляет два метода для решения проблем связи: один - это метод, управляемый событиями, а другой - метод запроса.
1. MSComm контролирует два способа управления связью
Элемент управления MSComm предоставляет два следующих способа управления связью: управляемый событиями и запрос.

1.1 Подход, основанный на событиях
Управляемая событиями связь является очень эффективным методом обработки взаимодействия через последовательный порт. Во многих случаях вам необходимо получать уведомление, когда происходит событие, например, когда в приемном буфере последовательного порта есть символ, или когда символ прибывает или происходит изменение в строке Carrier Detect (CD) или Request ToSend (RTS). В этих случаях вы можете использовать событие OnComm элемента управления MSComm для захвата и обработки этих событий связи. Событие OnComm также может проверять и обрабатывать ошибки связи. Список всех событий связи и ошибок связи см. В свойстве CommEvent. В процессе программирования вы можете добавить свой собственный код обработки в функцию обработки событий OnComm. Преимущество этого метода заключается в том, что программа отвечает быстро и имеет высокую надежность. Каждый элемент управления MSComm соответствует последовательному порту. Если приложению требуется доступ к нескольким последовательным портам, необходимо использовать несколько элементов управления MSComm.

1.2 Как сделать запрос
Метод запроса по сути основан на событиях, но в некоторых случаях этот метод более удобен. После каждой ключевой функции программы вы можете запрашивать события и ошибки, проверяя значение свойства CommEvent. Если приложение небольшое и самоокупаемое, этот метод может быть предпочтительным. Например, если вы пишете простую программу набора номера по телефону, вам не нужно генерировать событие для каждого полученного символа, потому что единственный символ, ожидающий получения, - это ответ «ОК» модема.

2. Общие атрибуты элемента управления MSComm
Элемент управления MSComm имеет много важных атрибутов, но сначала вы должны быть знакомы с несколькими атрибутами.
CommPort устанавливает и возвращает номер порта связи.
Настройки Установите и верните скорость передачи, четность, биты данных и стоп-биты в виде символьных строк.
PortOpen устанавливает и возвращает состояние порта связи. Вы также можете открывать и закрывать порты.
Ввод возвращает и удаляет символы из буфера приема.
Выходные данные Записать строку в буфер передачи.
Соответственно описано следующее:

Свойства настроек
Установите и верните параметры скорости передачи, четности, бит данных и стоп-бит.
Синтаксис
object.Settings[ = value]
Синтаксис атрибута Настройки включает в себя следующие части:
описание раздела
Выражение объекта , значение которого является объектом в списке «относится к».
Значение Строковое выражение, указывающее значение настройки порта связи, как описано ниже.
Инструкции
Когда порт открыт, если значение недопустимо, элемент управления MSComm генерирует ошибку 380 (недопустимое значение атрибута).
Значение состоит из четырех значений настройки в следующем формате:
"BBBB,P,D,S"
BBBB - это скорость передачи, P - четность, D - количество битов данных, а S - количество стоп-битов. Значение по умолчанию:
"9600,N,8,1"
В следующей таблице перечислены допустимые скорости передачи:
Установите значение
110
300
600
1200
2400
9600 (по умолчанию)
14400
19200
28800
38400
56000
128000
256000

В таблице ниже показано значение допустимого паритета.
Значение настройки Описание
E четное число (четное)
M mark (Марк)
N По умолчанию (по умолчанию)
None
Нечетное число (Нечетное)
S пробел (пробел)

В следующей таблице перечислены допустимые значения битов данных.
Установите значение
4
5
6
7
8 (по умолчанию)

В следующей таблице перечислены допустимые значения стоп-битов.

настройки
1 (по умолчанию)
1.5
2

тип данных
String
Пример настроек
В следующем примере устанавливается связь через порт управления, скорость передачи 9600 бод, без проверки четности, 8 бит данных, 1 стоповый бит:
MSComm1.Settings = "9600,N,8,1"

Свойства PortOpen
Установите и верните статус коммуникационного порта (включен или выключен). Недействительно во время разработки.
Синтаксис
object.PortOpen[ = value]
Синтаксис атрибута PortOpen включает в себя следующие части:

описание раздела
Выражение объекта , значение которого является объектом в списке «относится к».
значение Булево выражение, указывающее состояние порта связи.
Установите значение
value Значения настройки:
Значение настройки Описание
Открытый порт открыт
Ложный порт отключен

Свойства ввода
Возврат и удаление потока данных в приемном буфере. Это свойство недопустимо во время разработки и доступно только для чтения во время выполнения.
Синтаксис
object.Input
Синтаксис входного атрибута включает в себя следующие части:
описание раздела
Выражение объекта , значение которого является объектом в списке «относится к».
Инструкции
Атрибут InputLen определяет количество символов, считываемых атрибутом Input. Установите InputLen в 0, тогда свойство Input считывает все содержимое в буфере.
Атрибут InputMode определяет тип данных, считываемых с помощью атрибута Input. Если для InputMode задано значение comInputModeText, свойство Input возвращает текстовые данные через Variant. Если для InputMode задано значение comInputModeBinary, свойство Input возвращает массив двоичных данных через Variant.
тип данных
Variant
Пример входного атрибута
В этом примере показано, как читать данные из приемного буфера.
Private Sub Command1_Click()
Dim InString as String
'Прочитать все доступные данные.
MSComm1.InputLen = 0

'Проверьте данные.
If MSComm1.InBufferCount Then
' Read data.
InString = MSComm1.Input
End If
End Sub

Выходные атрибуты
Запись потока данных в буфер передачи. Это свойство недопустимо во время разработки и доступно только для чтения во время выполнения.
Синтаксис
object.Output [ = value ]
Синтаксис выходного атрибута включает в себя следующие части:
описание раздела
Выражение объекта , значение которого является объектом в списке «относится к».
value Строка, которая будет записана в буфер передачи.

Событие OnComm
Всякий раз, когда изменяется значение атрибута CommEvent, генерируется событие OnComm, указывающее, что произошло событие связи или ошибка.
Синтаксис
Private Sub object_OnComm ()

Инструкции
Пока существует ошибка связи или событие, будет генерироваться событие OnComm, а свойство CommEvent хранит числовой код ошибки или события. Чтобы определить точную ошибку или событие, вызвавшее событие OnComm, обратитесь к свойству CommEvent.
Свойство CommEvent возвращает одно из следующих значений, чтобы указать различные ошибки или события связи. Эти константы можно найти в библиотеке объектов элемента управления. Ошибки связи включают в себя следующие настройки:
Описание постоянного значения
comEventBreak 1001 получил сигнал прерывания.
comEventCTSTO 1002 Очистка ToTo Время отправки истекло. Когда символ передается в течение заданного времени системы, строка Clear To Send становится низкой.
comEventDSRTO 1003 Тайм-аут набора данных готов. Когда символ передается в течение указанного времени системы, строка Готовность набора данных заканчивается.
Ошибка кадра 100E comEventFrame. Аппаратное обеспечение обнаружило ошибку кадра.
Порт comEventOverrun 1006 превышен. Символ не считывается с аппаратного обеспечения до прибытия следующего символа, и персонаж теряется.
comEventCDTO 1007 Тайм-аут обнаружения несущей. При передаче символа в течение указанного времени системы линия обнаружения несущей заканчивается на низком уровне. Обнаружение несущей также известно как обнаружение сигнала приемной линии (RLSD).
comEventRxOver 1008 Принять переполнение буфера. В буфере приема нет места.
comEventRxParity 1009 четность. Аппаратное обеспечение обнаружило ошибку четности
comEventTxFull 1010 Буфер передачи заполнен. Буфер передачи заполнен при передаче символов
comEventDCB 1011 Неожиданная ошибка при получении блока управления устройством порта (DCB)

Коммуникационные события включают в себя следующие параметры:
Описание постоянного значения
comEvSend 1 В буфере передачи меньше символов, чем Sthreshold.
comEvReceive 2 полученных символа Rthreshold. Это событие будет генерироваться до тех пор, пока атрибут input не будет использован для удаления данных из приемного буфера.
Статус строки comEvCTS 3 Clear To Send изменился.
Состояние строки готовности набора данных comEvDSR 4 изменилось. Инцидент произошел только когда DST изменился с 1 на 0.
Статус строки comEvCD 5 Carrier Detect изменился.
comEvRing 6 Обнаружен сигнал вызова. Некоторые UART (универсальная асинхронная передача-прием) могут не поддерживать это событие.
comEvEOF 7 Получен символ конца файла (символ ASCII равен 26).

тип данных
Integer

Может быть кому нибудь пригодится ИНФА

Адаптер правильный китайский CH340 PIC18F25K80 USB с тумблером
Драйвер к нему USB_CH341SER.ZIP
1) При попытке общаться с машиной через ELMConfig на win10
Шина HS-CAN работает нормально т.е. PCM HEC - можно читать и управлять.
Шина MS-CAN Не работает совсем т.е GEM нельзя ни прочитать ни управлять.
Получаем ошибку - "Некорректный ответ от ELM на запрос "10 87" NO DATA"
В случае если положение тумблера выставить противоположное
Получаем ошибку - "Некорректный ответ от ELM на запрос "10 87" CAN ERROR"
Так и не смог найти правильные дрова для данного адаптера под win10
В итоге нашол ноутбук с winXP

26.07.2017 14:02 <DIR> .
26.07.2017 14:02 <DIR> ..
04.12.2014 16:59 152 848 comdlg32. ocx
04.12.2014 16:59 463 360 ConvertSys.dll
26.07.2017 14:01 <DIR> data
04.12.2014 16:59 1 249 083 ELMConfig.exe
04.12.2014 16:59 1 070 232 mscomctl. ocx
04.12.2014 16:59 103 744 mscomm32.ocx
04.12.2014 16:59 126 800 mswinsck. ocx
04.12.2014 16:59 1 389 568 msxml6.dll
04.12.2014 16:59 163 840 scrrun.dll
9 файлов 4 719 475 байт

26.07.2017 14:01 <DIR> .
26.07.2017 14:01 <DIR> ..
04.12.2014 16:59 12 603 6G9T-14C097-AA.vbf
04.12.2014 16:59 2 021 6M2T-14C025-AB.vbf
04.12.2014 16:59 12 573 7G9T-14C097-AA.vbf
04.12.2014 16:59 2 745 7M2T-14C025-AA.vbf
04.12.2014 16:59 12 212 AG9T-14C097-AC.vbf
04.12.2014 16:59 2 083 AM2T-14C025-AA.vbf
04.12.2014 16:59 2 083 AM2T-14C025-BA.vbf
04.12.2014 16:59 12 240 BG9T-14C097-AA.vbf
04.12.2014 16:59 8 460 BV6N-14C097-AC.vbf
04.12.2014 16:59 5 144 576 code.dtc
04.12.2014 16:59 14 740 DV6T-14C097-AB.vbf
04.12.2014 16:59 8 981 024 frw.dat
13 файлов 14 207 360 байт

Извините за поздний ответ. Пока добрался до машины,что бы проверить. Всё заработало. ООгромное спасибо за совет. Была неправильно установлена программа,переустановил и всё прочиталось и круиз-контроль прописал.Осталось проверить на ходу


26 июля 2017

kashar45
А все файлы распакованы из архива программы?
Должно быть так:

26.07.2017 14:02 <DIR> .
26.07.2017 14:02 <DIR> ..
04.12.2014 16:59 152 848 comdlg32. ocx
04.12.2014 16:59 463 360 ConvertSys.dll
26.07.2017 14:01 <DIR> data
04.12.2014 16:59 1 249 083 ELMConfig.exe
04.12.2014 16:59 1 070 232 mscomctl. ocx
04.12.2014 16:59 103 744 mscomm32.ocx
04.12.2014 16:59 126 800 mswinsck. ocx
04.12.2014 16:59 1 389 568 msxml6.dll
04.12.2014 16:59 163 840 scrrun.dll
9 файлов 4 719 475 байт

26.07.2017 14:01 <DIR> .
26.07.2017 14:01 <DIR> ..
04.12.2014 16:59 12 603 6G9T-14C097-AA.vbf
04.12.2014 16:59 2 021 6M2T-14C025-AB.vbf
04.12.2014 16:59 12 573 7G9T-14C097-AA.vbf
04.12.2014 16:59 2 745 7M2T-14C025-AA.vbf
04.12.2014 16:59 12 212 AG9T-14C097-AC.vbf
04.12.2014 16:59 2 083 AM2T-14C025-AA.vbf
04.12.2014 16:59 2 083 AM2T-14C025-BA.vbf
04.12.2014 16:59 12 240 BG9T-14C097-AA.vbf
04.12.2014 16:59 8 460 BV6N-14C097-AC.vbf
04.12.2014 16:59 5 144 576 code.dtc
04.12.2014 16:59 14 740 DV6T-14C097-AB.vbf
04.12.2014 16:59 8 981 024 frw.dat
13 файлов 14 207 360 байт

WIN 10 x64
ЕЛМ327 на чипе FTDI с USB c переключатем

регистрацию библиотеки в командной строке, как кто то делал на вин 7х64 не делал

После этого приложение запустилось.

нашел причину проблемы, цитирую из соседней ветки

Оказывается, что используемый в Вашей программе ActicvX объект, живущий в mscomm32.ocx НЕ УМЕЕТ работать с драйверами устройств некоторых производителей (в частности: Texas Instruments TUSB3410, Some Bluesoleil device(s) (Bluetooth etc) using their virtual com port drivers). У меня в планшете как раз стояли драйвера от Bluesoleil (эти драйвера шли в поставке).

Все заработало после того как я снес Bluesoleil и установил Toshiba Bluetooth Stack (это и оболочка для работы с блютуз устройсвами и драйвера - в одном флаконе).
и вот еще вопрос, у меня блютуз адаптер, хочу перепаять в юсб, может кто покинет схему


На компьютерах с Windows 7 и Windows 10 пользователи ПК могут столкнуться с ошибкой Component MSCOMCTL.OCX or one of its dependencies not correctly registered: a file is missing or invalid, которая появляется как при запуске операционной системы, так и при открытии какой-то программы. Причина такой неполадки кроется в том, что некоторому софту для нормального функционирования нужен модуль управления ActiveX. В его состав входит файл MSCOMCTL.OCX. Из-за его отсутствия или повреждения может появиться такая ошибка.

Решение ошибки Component MSCOMCTL OCX not correctly registered

Поскольку файл MSCOMCTL.OCX может отсутствовать на ПК или быть повреждённым, то многие пользователи часто загружают его из сети. Однако DLL файлы часто имеют в себе вредоносный код, а поэтому лучше скачать с официального сайта программу Visual Basic 6.0, в состав которой как раз и входит этот файл.

  • Нужно нажать правой кнопкой мыши на архиве и выбрать «Извлечь файлы».
  • Находим в папке файл mscomctl.ocx. Его нужно скопировать в соответствующие папки.
  • Если у вас 32-битная версия Windows 7 или 10, то нужно поместить файл по адресу C:\Windows\System32.
  • Если у вас 64-битная версия операционной системы, то файл mscomctl.ocx нужно поместить по адресу C:\Windows\SysWOW64 и C:\Windows\System32.

ВАЖНО! Даже если у вас на ПК есть файл mscomctl.ocx его можно попробовать перерегистрировать.

  • Открываем командную строку с правами Администратора и вводим такие команды. Их нужно вводить по очереди.
  • regsvr32 mscomctl.ocx - регистрация файла по пути C:\Windows\System32.
  • CD C:\Windows\SysWOW64 - переходим на путь C:\Windows\SysWOW64.
  • regsvr32 mscomctl.ocx - регистрация файла по пути C:\Windows\SysWOW64.

Перезагружаем систему, чтобы изменения вступили в силу. Проверяем, появляется ли ошибка. Если ошибка не исчезла, стоит проверить Windows на целостность системных файлов, а также откатить ОС до более раннего состояния.


На компьютерах с Windows 7 и Windows 10 пользователи ПК могут столкнуться с ошибкой Component MSCOMCTL.OCX or one of its dependencies not correctly registered: a file is missing or invalid, которая появляется как при запуске операционной системы, так и при открытии какой-то программы. Причина такой неполадки кроется в том, что некоторому софту для нормального функционирования нужен модуль управления ActiveX. В его состав входит файл MSCOMCTL.OCX. Из-за его отсутствия или повреждения может появиться такая ошибка.

Решение ошибки Component MSCOMCTL OCX not correctly registered

Поскольку файл MSCOMCTL.OCX может отсутствовать на ПК или быть повреждённым, то многие пользователи часто загружают его из сети. Однако DLL файлы часто имеют в себе вредоносный код, а поэтому лучше скачать с официального сайта программу Visual Basic 6.0, в состав которой как раз и входит этот файл.

  • Нужно нажать правой кнопкой мыши на архиве и выбрать «Извлечь файлы».
  • Находим в папке файл mscomctl.ocx. Его нужно скопировать в соответствующие папки.
  • Если у вас 32-битная версия Windows 7 или 10, то нужно поместить файл по адресу C:\Windows\System32.
  • Если у вас 64-битная версия операционной системы, то файл mscomctl.ocx нужно поместить по адресу C:\Windows\SysWOW64 и C:\Windows\System32.

ВАЖНО! Даже если у вас на ПК есть файл mscomctl.ocx его можно попробовать перерегистрировать.

  • Открываем командную строку с правами Администратора и вводим такие команды. Их нужно вводить по очереди.
  • regsvr32 mscomctl.ocx - регистрация файла по пути C:\Windows\System32.
  • CD C:\Windows\SysWOW64 - переходим на путь C:\Windows\SysWOW64.
  • regsvr32 mscomctl.ocx - регистрация файла по пути C:\Windows\SysWOW64.

Перезагружаем систему, чтобы изменения вступили в силу. Проверяем, появляется ли ошибка. Если ошибка не исчезла, стоит проверить Windows на целостность системных файлов, а также откатить ОС до более раннего состояния.

Читайте также: