Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Компьютерное железо
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2012, 00:19   #1
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию Переходник USB > COM BA8050 от "Мастер Кит" - нет приёма\передачи.

Кто пользовался данным устройством, поделитесь опытом. Уже неделю попыток без результатно. В сети вроде, как таких проблем ни у кого не возникало. Драйвера ставил разных версий, но кроме, как горения красного светодиода на устройстве больше ни чего не работает. В диспетчере определяется, СОМ назначает, а передачи\приёма нет. Да, устройство новое.

Последний раз редактировалось С.М.С; 19.01.2012 в 00:36.
С.М.С вне форума Ответить с цитированием
Старый 24.01.2012, 22:30   #2
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Проблема в переходнике, сегодня купил такой же, ну или почти, спаян более правильно. Передача с устройства на ПК есть, монитор порта фиксирует, но вот моя программа касячит. При виртуальном порте всё работает. Отсылка команды на устройство проходит. На стационарнике обмен есть, но как будто частично, то проходит то нет, поскольку есть 7 сегментные индикаторы на самом приборе и обновление их значений с передачей значений на ПК идут синхронно. Что может быть? Ниже приведу как организована программа на VB. Что бы не плодить темы.

Принимаемая команда имеет следующий вид: 3A CMD 1H 1L 2H 2L 3H 3L 4H 4L,где
3А - стартовый байт
CMD - байт команды, здесь - А0
1H 1L - старший и младший байты значения напряжения по каналу +
2H 2L - старший и младший байты значения тока по каналу +
3H 3L - старший и младший байты значения напряжения по каналу -
4H 4L - старший и младший байты значения тока по каналу -

Последний раз редактировалось С.М.С; 24.01.2012 в 22:53.
С.М.С вне форума Ответить с цитированием
Старый 24.01.2012, 22:56   #3
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Процедура приёма:
Код:
Private Sub Timer2_Timer()
Dim буфер_порта As String
Dim temp
Dim temp2 As String
Dim a As Integer


буфер_порта = Me.MSComm1.Input

temp = Len(буфер_порта)

If temp = 10 Then
temp = Left$(буфер_порта, 2)
If temp = Chr$(58) & Chr$(160) Then
буфер = буфер_порта

temp = Right$(буфер, 8)
буфер = temp
an_byte = Left$(буфер, 2)
temp = Left$(an_byte, 1)
temp = (Asc(temp)) * 256
temp2 = Right$(an_byte, 1)
temp2 = Asc(temp2)
temp = temp + temp2

    array_voltage_plus(40) = temp
'Сдвиг массива на один влево
    For a = 1 To 39
    array_voltage_plus(a) = array_voltage_plus(a + 1)
    Next a


Программа_разложения_2х_байтового_числа_напряжения (temp)
Label9.Caption = "+" & temp_text





temp = Right$(буфер, 6)
буфер = temp
an_byte = Left$(буфер, 2)
temp = Left$(an_byte, 1)
temp = (Asc(temp)) * 256
temp2 = Right$(an_byte, 1)
temp2 = Asc(temp2)
temp = temp + temp2

    array_current_plus(40) = temp
'Сдвиг массива на один влево
    For a = 1 To 39
    array_current_plus(a) = array_current_plus(a + 1)
    Next a


Программа_разложения_2х_байтового_числа_тока (temp)
Label10.Caption = temp_text






temp = Right$(буфер, 4)
буфер = temp
an_byte = Left$(буфер, 2)
temp = Left$(an_byte, 1)
temp = (Asc(temp)) * 256
temp2 = Right$(an_byte, 1)
temp2 = Asc(temp2)
temp = temp + temp2

    array_voltage_minus(40) = temp
'Сдвиг массива на один влево
    For a = 1 To 39
    array_voltage_minus(a) = array_voltage_minus(a + 1)
    Next a


Программа_разложения_2х_байтового_числа_напряжения (temp)
Label13.Caption = "-" & temp_text






temp = Right$(буфер, 2)
буфер = temp
an_byte = Left$(буфер, 2)
temp = Left$(an_byte, 1)
temp = (Asc(temp)) * 256
temp2 = Right$(an_byte, 1)
temp2 = Asc(temp2)
temp = temp + temp2

    array_current_minus(40) = temp
'Сдвиг массива на один влево
    For a = 1 To 39
    array_current_minus(a) = array_current_minus(a + 1)
    Next a


Программа_разложения_2х_байтового_числа_тока (temp)
Label14.Caption = temp_text




Call graph_voltage_plus
Call graph_voltage_minus
буфер = ""
End If
End If


End Sub

Процедура передачи уставки значения напряжения: Она работает корректно.
Код:
Private Sub Command_transmit()
Dim a As Integer
Dim b As Integer

If Me.MSComm1.PortOpen = True Then
    a = Value_voltage_requared_click
    b = a \ 255
    transmit_H_byte = b
    b = a - transmit_H_byte * 255
    transmit_L_byte = b
    
Do While Not Form3.MSComm1.OutBufferCount = 0
Loop
Form3.MSComm1.Output = Chr$(58)

Do While Not Form3.MSComm1.OutBufferCount = 0
Loop
Form3.MSComm1.Output = Chr$(177)

Do While Not Form3.MSComm1.OutBufferCount = 0
Loop
Form3.MSComm1.Output = Chr$(transmit_H_byte)

Do While Not Form3.MSComm1.OutBufferCount = 0
Loop
Form3.MSComm1.Output = Chr$(transmit_L_byte)
Else
MsgBox "Порт закрыт, выбирите СОМ порт", vbInformation
End If
Timer1.Enabled = False
End Sub
С.М.С вне форума Ответить с цитированием
Старый 25.01.2012, 11:49   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

К этому времени вы б уже FT-232 или 245 прикупили и напаяли сами.
1- на новом купленном "непропаи" проверяли?
2- таймауты прибора и программы?
3- а что за ОС у вас? Дров на семерку под данный программатор на их сайте я не видел.

Цитата:
На стационарнике обмен есть, но как будто частично, то проходит то нет, поскольку есть 7 сегментные индикаторы на самом приборе и обновление их значений с передачей значений на ПК идут синхронно.
э-э-э, проверку хорошо бы провести не сразу с прибором (прибор то сам проверялся?), а с гипертерминалом через заглушку - виртуальный COM-USB/RS-232.


OFFTOP >
...не в обиду мастер-киту будет сказано, но продукцию под свои брендом они часто заказывают на стороне у ЧП-ников и в последнее время много неликвидов, поработает и сдохнет, сам лично столкнулся.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 25.01.2012, 13:26   #5
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Спасибо за внимание, это опять мои ошибки в программе. Буфер порта проверялся по таймеру и после каждой проверки очищался, в независимости от того, прошла команда полностью, частично или вообще не прошла. Исправил, работаем дальше.

ОС - XP, на семёрке драйвер хоть и устанавливается, но до селе не работал.
Многое делается в первый раз, поэтому вносить ещё одну вероятность неудачи не хотелось, как ни как дипломный проект, всякое может быть, бонусы уже пошли с бумажной волокитой. Так же имеется три микросхемы MAXIM 232CWE, поэтому решил делать на ней, хотя действительно, по уму уже стоит делать сразу для USB.
Схемы на бумаги уже отличаются с действительностью, может не придеруться, если заметят. После доработки и исправления поделюсь с сетью импульсным регулируемым источником питания, может кому понадобится.

Последний раз редактировалось С.М.С; 25.01.2012 в 13:42.
С.М.С вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где можно скачать передачи с телеканала "Усадьба"? Ecosasha Свободное общение 3 09.12.2010 01:49
если >30 тогда "да" иначе "нет"... DBgrid Daur БД в Delphi 4 30.05.2010 16:54
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
HTML нет событий при передачи методо POST через <input type="image" Mixail HTML и CSS 12 07.06.2009 03:33
Нет в русском языке "ложит", есть - "кладет". mihali4 Свободное общение 25 01.04.2008 11:19