Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/37: Рейтинг темы: голосов - 37, средняя оценка - 4.51
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352

Разложить байт на биты

22.07.2012, 18:03. Показов 8091. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При работе с контроллером, получаю байтовую последовательность. Мне нужно выделить из массива 10 байт и разложить его побитно, ну и вывести на TеxtBox
Visual Basic
1
2
3
4
5
6
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a As Variant
Winsock1.GetData a, , bytesTotal          'get message from buffer
 
Text3.Text =    '??????
End Sub
Добавлено через 12 минут
а точнее в каждую текстовую область свой бит
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.07.2012, 18:03
Ответы с готовыми решениями:

Дан массив из 10 байт. Посчитать количество байт, в которых сброшены 6 и 4 биты
Дан массив из 10 байт. Посчитать количество байт,в которых сброшены 6 и 4 биты. Массив байтов размещается начиная с DS:0000h. Ответ должен...

Определение в массиве из 15 байт количества байт, в которых сброшены 6 и 4 биты
Помогите пожалуйста разработать программу на языке ассемблера, определяющую в массиве из 15 байт количество байт, в которых сброшены 6 и 4...

Байт в биты в файле
Нашёл такую реализацию(вроде бы реализацию, я сам не знаю как она работает) превращения байта символа в биты. Но не могу понять, как собой...

11
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.07.2012, 19:00
Преобразовать HEX в BIN, получишь строку 8 бит, и эти биты пиши куда надо. Преобразовать можно так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Function HexToBin(HexNum As String) As String
    Dim BinNum As String
    Dim lHexNum As Long
    Dim i As Integer
     
    On Error GoTo ErrorHandler
     
     '  Check the string for invalid characters
    For i = 1 To Len(HexNum)
        If ((Asc(Mid(HexNum, i, 1)) < 48) Or _
        (Asc(Mid(HexNum, i, 1)) > 57 And _
        Asc(UCase(Mid(HexNum, i, 1))) < 65) Or _
        (Asc(UCase(Mid(HexNum, i, 1))) > 70)) Then
            BinNum = ""
            Err.Raise 1016, "HexToBin", "Invalid Input"
        End If
    Next i
     
    i = 0
    lHexNum = Val("&h" & HexNum)
    Do
        If lHexNum And 2 ^ i Then
            BinNum = "1" & BinNum
        Else
            BinNum = "0" & BinNum
        End If
        i = i + 1
    Loop Until 2 ^ i > lHexNum
     '  Return BinNum as a String
    HexToBin = BinNum
ErrorHandler:
End Function
 
MsgBox HexToBin("FF") ' Получаем 11111111
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
22.07.2012, 19:20  [ТС]
А как мне hex, кот приходит с контроллера вывести на textbox.
А то когда так
Visual Basic
1
Text3.Text = а(10)
то 0 выводит
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
22.07.2012, 19:33
Цитата Сообщение от Техник55 Посмотреть сообщение
Мне нужно выделить из массива 10 байт и разложить его побитно, ну и вывести на TеxtBox
10 байт, это 80 битов и столько же текстбоксов?
Я в правильном направлении мыслю
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.07.2012, 19:37
Цитата Сообщение от Техник55 Посмотреть сообщение
то 0 выводит
Ну это ясно 0, у тебя сейчас массив а, в котором 10-й элемент =0

А посмотреть, что приходит вообще ? Что то типа такого
Visual Basic
1
2
3
Dim strData As String
         Winsock1.GetData strData
    Debug.Print strData
И работать с данными как с текстом. Преобразовать данные потом как надо с помощью встроенных функций.
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
22.07.2012, 20:01  [ТС]
Сделал как посоветовали
Visual Basic
1
2
3
4
5
6
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim stra As String
 
Winsock1.GetData stra          'get message from buffer
MsgBox stra  
End Sub
В окне ничего...
Неужели ничего от него не приходит??? Вот дела...
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.07.2012, 21:16
Цитата Сообщение от Техник55 Посмотреть сообщение
Неужели ничего от него не приходит?
А ивент по приходу данных как я понял срабатывает? Тогда попробуй явно указать тип данных
Visual Basic
1
2
Winsock1.GetData stra , vbString
Winsock1.GetData
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
23.07.2012, 00:54  [ТС]
Щас попробую...
От него точно идет, я останову поставил после Winsock1.GetData a, , bytesTotal.
Зашел в Locals и увидел
a(0)=0
a(1)=0
a(2)=0
a(3)=0
a(4)=0
a(5)=4
a(6)=1
a(7)=1
a(8)=1
a(9)=63
А почему не выводит мне не пойму???

Добавлено через 50 минут
Разобрался вот так выводит:
Visual Basic
1
Text3.Text = Val(a(9))
Теперь осталось запустить чтобы опрос контроллера был не по счетчику а постоянно с интервалом в одну секунду??!!

Добавлено через 1 минуту
Описался, имел ввиду не по нажатию кнопки, а постоянно с интервалом в одну секунду??!!

Добавлено через 2 часа 2 минуты
Вопрос назрел:
У меня оказывается в dec выводит.
Я преобразую в битовую последовательность:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Function DecToBin(DeciValue As Long, Optional NoOfBits As Integer = 8) _
As String
 
  Dim i As Integer
  'make sure there are enough bits to contain the number
  Do While DeciValue > (2 ^ NoOfBits) - 1
    NoOfBits = NoOfBits + 8
  Loop
  DecToBin = vbNullString
  'build the string
  For i = 0 To (NoOfBits - 1)
      DecToBin = CStr((DeciValue And 2 ^ i) / 2 ^ i) & DecToBin
  Next i
End Function
Вывожу на textbox:
Visual Basic
1
Text4.Text = DecToBin(Val(a(9)))
Подскажите как мне обратиться к конкретному биту в байте????
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
23.07.2012, 07:30
Цитата Сообщение от Техник55 Посмотреть сообщение
Подскажите как мне обратиться к конкретному биту в байте?
Так?
Visual Basic
1
2
3
function GetBitN(b as byte,n as byte)as byte
  GetBitN=-((b and 2^n)<>0)
end function
Или махом загнать все биты байта в массив, а затем обращаться к каждому типа биту в массиве по индексу - намного быстрее будет, чем степени двойки каждый раз вычислять
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function GetBitA(b As Byte)
Dim a(0 To 7) As Byte, i As Byte, t As Integer
  t = 1
  For i = 0 To 7
    a(i) = -((b And t) <> 0)
    t = 2 * t
  Next i
  GetBitA = a
End Function
 
Sub GetBitA_Example()
Dim v
v = GetBitA(128)
End Sub
2
Заблокирован
23.07.2012, 09:38
Обращение по времени - это надо задействовать таймер. И все таки хороший я пример с WinSock привел а техник ))))
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
23.07.2012, 12:52  [ТС]
Цитата Сообщение от inv.DS Посмотреть сообщение
Обращение по времени - это надо задействовать таймер.
Нужно постоянное обращение. Сделал обращение к контроллеру через таймер. Зависла!!!!
Visual Basic
1
2
3
4
5
6
7
Private Sub Command1_Click()
Dim StartTime
StartTime = Timer
Do While Timer < StartTime + 1
ReadCoils
Loop
End Sub
Как я понимаю пока условие выполняется идет обращение к контроллеру. А условие ЭТО всегда выполнится!!! Может где то DoEvents влепить???
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
23.07.2012, 21:28
Конечно зависла, Вам ведь нужно ежесекундное. По-простому так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Command1_Click()
Dim StartTime as single
1:
ReadCoils
StartTime = Timer
Do While Timer-starttime<1 and Timer-starttime>0
  doevents
Loop
goto 1
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2012, 21:28
Помогаю со студенческими работами здесь

Каждый байт в файле перевести в биты
Доброго дня Всем! Ребят, прошу помощи. ТЗ: Есть файл 1.dat в котором хранятся байты. 1) Прочитать весь файл побайтово. 2) Каждый...

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

Объясните, как показываются биты, составляющие байт?
Здравствуйте, изучаю C# по Шилдту, дошёл до работы с битами. Более-менее понял как считаются числа в двоичной системе, понял как...

Как произвольный байт на входе преобразовать в биты
Собственно, вопрос в заголовке )) Подскажите, пожалуйста! ))

Биты (например, массив битов) собрать в байт
1) ...для того, чтоб узнать о текущей расскладке клавиатуры (Ru, Eng, ...и т.д.) ? 2) ...чтоб Биты (например, массив битов)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru