Роман-вб писал(а):!Viper!а Роману-vb изучать представление целых чисел г компе
Это голословная фраза. Ну где я ошибся, говоря о представлении целых чисел
Хакер писал(а):Что вы пристали к человеку?
У каждого есть право на ошибку и неточность...
Некоторые люди упроно отказываются признавать за собой ошибки и неточности...
GRS писал(а):Кто-нибудь можется сказать: ЧТО ДЕЛАЕТ AND?
Я писал(а):Я просто описал, как действует And и т.д. с числами! Не более.
0011
0011
AND 0010
= 0010
Роман-вб писал(а):Некоторые люди упроно отказываются признавать за собой ошибки и неточности...
это не такGRS писал(а):Кто-нибудь можется сказать: ЧТО ДЕЛАЕТ AND?
Я писал(а):Я просто описал, как действует And и т.д. с числами! Не более.
GRS писал(а):Для отображения чисел от 0 до 255 достаточно 8 бит. А по тексту и Вашим поправкам выходит, что каждый бит этого числа выдается еще раз по-битно?? Если 1 - то ооо1оооо, а если 0 - тогда ооо0оооо... Как считаете - это правильно? Почему все крутится вокруг пятого бита?
Что за строчка магическая E = INP(B + 6) AND 16?...
Но эти биты оказваются в порте не одновременно, а по очереди.
В моём справочнике написано, что в пятом бите регистра B+6 отражается состояние линии CTS. Видимо, именно эту линию дёргает твой АЦП.
Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
Public W_PORT As Integer
Public A_STATE As Integer
Public CNT As Long
Public N As Integer
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 'Это чтоб порбелом начинать читать или прекращать и выходить из программы
Select Case KeyCode
Case Is = 32
If A_STATE = 0 Then
tmrTake.Enabled = True
A_STATE = 1
CNT = 1
Else
tmrTake.Enabled = False
A_STATE = 0
End If
Case Is = 27
End
End Select
End Sub
Private Sub Form_Load() ' инициализация
Dim TMP_CCL As Integer
A_STATE = 0
W_PORT = &H2F8
N = 8
Out W_PORT + 4, 1
For TMP_CCL = 1 To 100: Next TMP_CCL
Out W_PORT + 3, 64
For TMP_CCL = 1 To 500: Next TMP_CCL
End Sub
Private Sub tmrTake_Timer() 'все чтение из АЦП в этом таймере
Dim D As Integer
Dim E As Integer
Dim Te As Integer
Dim TMP_CCL As Integer
CNT = CNT + 1
Out W_PORT + 4, 0
D = 0
For TMP_CCL = 0 To N - l
Out W_PORT + 4, 2
E = Inp(W_PORT + 6) And 16
'Te = Inp(W_PORT + 6)
Out W_PORT + 4, 0
If E = 16 Then D = D + 2 ^ (N - 1 - TMP_CCL)
Next TMP_CCL
D = 5 * D / (2 ^ N - 1)
Out W_PORT + 4, 1
lblVolt.Caption = Trim(Str(D))
lblTime.Caption = Trim(Str(CNT))
End Sub
Private Const GENERIC_READ = &H80000000
Private Const OPEN_EXISTING = 3
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Sub Command1_Click()
hComPort = CreateFile("COM1", GENERIC_READ, 0, vbNull, OPEN_EXISTING, 0, vbNull)
End Sub
SECURITY_ATTRIBUTES
GRS писал(а):
- Код: Выделить всё
Private Const GENERIC_READ = &H80000000
Private Const OPEN_EXISTING = 3
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Sub Command1_Click()
hComPort = CreateFile("COM1", GENERIC_READ, 0, vbNull, OPEN_EXISTING, 0, vbNull)
End Sub
Ругается User-defined type not defined, как только жму F5. Что не так?
Private Const GENERIC_READ = &H80000000
Private Const OPEN_EXISTING = 3
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ИнМфд lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Sub Command1_Click()
hComPort = CreateFile("COM1", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0)
End Sub
andreymp писал(а):Почему он только один раз мне хэндл возвращает, а потом надо перегружать VB?
Может потому, что ты запрещаешь общий доступ( dwSharedMode=0) и хендл не освобождаешь.
Private Const GENERIC_READ = &H80000000
Private Const OPEN_EXISTING = 3
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Command1_Click()
hComPort = CreateFile("COM1", GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0)
End Sub
Private Sub Command2_Click()
Call CloseHandle(hComPort)
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68