Come si fa ad inviare/ricevere file in VB.NET tramite USB?
Ho trovato un paio di librerie, ma nessun sorgente di esempio in VB.net, solo in c++...
L'unica che dovrebbe funzionare è questa (l'altra che ho trovato e bacata e non piu' sviluppata); sto provando a convertire i sorgenti c# in VB.net, ma senza successo.
Per esempio, questa funzione mi dà sempre errore:
codice:
private bool openDevice(int index)
{
int ret;
bool bRtn = false;
closeDevice();
chkRead.CheckedChanged -= chkRead_CheckedChanged;
chkRead.Checked = false;
cmdRead.Enabled = true;
chkRead.CheckedChanged += chkRead_CheckedChanged;
mDev = mDevList[index];
mDev.Open();
Debug.Assert(mDev.SetConfiguration(1) == 0);
Debug.Assert(mDev.ClaimInterface(0) == 0);
mEpReader = mDev.OpenBulkEndpointReader(ReadEndpoints.Ep01);
mEpWriter = mDev.OpenBulkEndpointWriter(WriteEndpoints.Ep01);
mEpReader.DataReceived += mEp_DataReceived;
panTransfer.Enabled = true;
byte bTestType;
if (mDev.Info.IdVendor == VID && mDev.Info.IdProduct == PID)
if (getTestType(out bTestType))
{
if (bTestType != 3)
{
ret = mDev.IOControlMessage(0xC0, 14, 3, 0, new byte[0], 1000);
if (ret >= 0)
{
byte[] _bTemp = new byte[64];
Int64 tickStart = DateTime.Now.Ticks;
while ((DateTime.Now.Ticks - tickStart) < 50000000)
{
ret = mEpReader.Read(_bTemp, 1000);
if (ret >= 0)
{
if ((ret == 1) && (_bTemp[0] == 0x80))
{
bRtn = true;
break;
}
}
Application.DoEvents();
}
}
}
else
bRtn = true;
}
if (bRtn)
tsStatus.Text = "Device Opened.";
else
tsStatus.Text = "Device Failed to Opened!";
return bRtn;
}
Mia versione VB:
codice:
Function openDevice(ByVal index As Integer) As Boolean
Dim ret As Integer
Dim bRtn As Boolean
Dim bTestType As Byte
Dim _bTemp(64) As Byte
Dim tickStart As Int64
bRtn = False
Dim b(100) As Byte
' closeDevice();
mDev = mDevList(index)
mDev.Open()
Debug.Assert(mDev.SetConfiguration(1) = 0)
Debug.Assert(mDev.ClaimInterface(0) = 0)
mEpReader = mDev.OpenBulkEndpointReader(ReadEndpoints.Ep01)
mEpWriter = mDev.OpenBulkEndpointWriter(WriteEndpoints.Ep01)
' mEpReader.DataReceived = mEpReader.DataReceived + mEp_DataReceived
If getTestType(bTestType) Then
If bTestType <> 3 Then
ret = mDev.IOControlMessage(192, 14, 3, 0, b, 1000)
If ret >= 0 Then
tickStart = DateTime.Now.Ticks
While (DateTime.Now.Ticks - tickStart) < 50000000
ret = mEpReader.Read(_bTemp, 1000)
If ret >= 0 Then
If ret = 1 And _bTemp(0) = 128 Then
bRtn = True
Exit While
End If
End If
Application.DoEvents()
End While
End If
Else
bRtn = True
End If
End If
If (bRtn) Then
Debug.Print("Device successfully Opened.")
Else
Debug.Print("Device Failed to Opened!")
End If
Return bRtn
End Function