'socket接受数据
Private Sub tcpsocket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim rc As Long
Dim WaveData() As Byte
Static ExBytes(MAXTCP) As Long
Static ExData(MAXTCP) As Variant
'--------------------------------------------------------------
With wStream
If (tcpsocket(Index).BytesReceived > 0) Then
Do While (tcpsocket(Index).BytesReceived > 0)
If (ExBytes(Index) = 0) Then
If (.waveChunkSize <= tcpsocket(Index).BytesReceived) Then
Call tcpsocket(Index).GetData(WaveData, vbByte + vbArray, .waveChunkSize)
Call .SaveStreamBuffer(Index, WaveData)
Call .AddStreamToQueue(Index)
Else
ExBytes(Index) = tcpsocket(Index).BytesReceived
Call tcpsocket(Index).GetData(ExData(Index), vbByte + vbArray, ExBytes(Index))
End If
Else
Call tcpsocket(Index).GetData(WaveData, vbByte + vbArray, .waveChunkSize - ExBytes(Index))
ExData(Index) = MidB(ExData(Index), 1) & MidB(WaveData, 1)
Call .SaveStreamBuffer(Index,ExData(Index))
Call .AddStreamToQueue(Index)
ExBytes(Index) = 0
ExData(Index) = ""
End If
Loop
If (Not .Playing And .PlayDeviceFree And _
Not .Recording And .RecDeviceFree) Then
Call play
End If
End If
End With talk.BorderStyle = 0
wStream.Recording = False
End Sub
-----------------------------
在 Call .SaveStreamBuffer(Index,ExData(Index))
这句代码总提示类型不匹配的错误!
如果换成Call .SaveStreamBuffer(Index, MidB(ExData(Index), 1) & MidB(WaveData, 1))
在最后play中
Private Sub play()
Dim rc As Long
Dim iPort As Integer
Dim itm As Integer
'--------------------------------------------------------------
If (Not wStream.Playing And wStream.PlayDeviceFree And _
Not wStream.Recording And wStream.RecDeviceFree) Then
wStream.Playing = True
iPort = wStream.StreamInQueue
Do While (iPort <> NULLPORTID)
rc = wStream.PlayWave(UserControl.hWND, iPort)
Call wStream.RemoveStreamFromQueue(iPort)
iPort = wStream.StreamInQueue
Loop
wStream.Playing = False
End If
End Sub
改变后这里rc = wStream.PlayWave(UserControl.hWND, iPort)
报错:
Error In acmStreamSize rc= 512 MSG= The requested operation cannot be performed LastDllError= 0 Source= Error In acmStreamPrepareHeader_x rc= 512 MSG= The requested operation cannot be performed LastDllError= 0 Source= Error In acmStreamUnprepareHeader_x rc= 514 MSG= The acm stream header is not prepared LastDllError= 0 Source=
哪位能帮忙解决一下!附送源代码
Private Sub tcpsocket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim rc As Long
Dim WaveData() As Byte
Static ExBytes(MAXTCP) As Long
Static ExData(MAXTCP) As Variant
'--------------------------------------------------------------
With wStream
If (tcpsocket(Index).BytesReceived > 0) Then
Do While (tcpsocket(Index).BytesReceived > 0)
If (ExBytes(Index) = 0) Then
If (.waveChunkSize <= tcpsocket(Index).BytesReceived) Then
Call tcpsocket(Index).GetData(WaveData, vbByte + vbArray, .waveChunkSize)
Call .SaveStreamBuffer(Index, WaveData)
Call .AddStreamToQueue(Index)
Else
ExBytes(Index) = tcpsocket(Index).BytesReceived
Call tcpsocket(Index).GetData(ExData(Index), vbByte + vbArray, ExBytes(Index))
End If
Else
Call tcpsocket(Index).GetData(WaveData, vbByte + vbArray, .waveChunkSize - ExBytes(Index))
ExData(Index) = MidB(ExData(Index), 1) & MidB(WaveData, 1)
Call .SaveStreamBuffer(Index,ExData(Index))
Call .AddStreamToQueue(Index)
ExBytes(Index) = 0
ExData(Index) = ""
End If
Loop
If (Not .Playing And .PlayDeviceFree And _
Not .Recording And .RecDeviceFree) Then
Call play
End If
End If
End With talk.BorderStyle = 0
wStream.Recording = False
End Sub
-----------------------------
在 Call .SaveStreamBuffer(Index,ExData(Index))
这句代码总提示类型不匹配的错误!
如果换成Call .SaveStreamBuffer(Index, MidB(ExData(Index), 1) & MidB(WaveData, 1))
在最后play中
Private Sub play()
Dim rc As Long
Dim iPort As Integer
Dim itm As Integer
'--------------------------------------------------------------
If (Not wStream.Playing And wStream.PlayDeviceFree And _
Not wStream.Recording And wStream.RecDeviceFree) Then
wStream.Playing = True
iPort = wStream.StreamInQueue
Do While (iPort <> NULLPORTID)
rc = wStream.PlayWave(UserControl.hWND, iPort)
Call wStream.RemoveStreamFromQueue(iPort)
iPort = wStream.StreamInQueue
Loop
wStream.Playing = False
End If
End Sub
改变后这里rc = wStream.PlayWave(UserControl.hWND, iPort)
报错:
Error In acmStreamSize rc= 512 MSG= The requested operation cannot be performed LastDllError= 0 Source= Error In acmStreamPrepareHeader_x rc= 512 MSG= The requested operation cannot be performed LastDllError= 0 Source= Error In acmStreamUnprepareHeader_x rc= 514 MSG= The acm stream header is not prepared LastDllError= 0 Source=
哪位能帮忙解决一下!附送源代码
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货