C# 使用usb调制解调器c调用并播放wav文件#
我已经写了一个代码,用连接的USB调制解调器拨打一个号码,想在连接的串行端口上播放一个.wav文件 我的代码正在进行呼叫,但当我尝试使用AT命令传输语音时,它总是会在一段时间内通过异常“端口拒绝访问”(但如果能够呼叫为什么拒绝访问)和一段时间“设备未连接”(但呼叫正在进行。在呼叫进行时,我如何重新连接设备。) 下面是我正在使用的代码,请看一看C# 使用usb调制解调器c调用并播放wav文件#,c#,serial-port,at-command,usb-modeswitch,C#,Serial Port,At Command,Usb Modeswitch,我已经写了一个代码,用连接的USB调制解调器拨打一个号码,想在连接的串行端口上播放一个.wav文件 我的代码正在进行呼叫,但当我尝试使用AT命令传输语音时,它总是会在一段时间内通过异常“端口拒绝访问”(但如果能够呼叫为什么拒绝访问)和一段时间“设备未连接”(但呼叫正在进行。在呼叫进行时,我如何重新连接设备。) 下面是我正在使用的代码,请看一看 public static void MakeCall(string number, string filepath, string PORT = "CO
public static void MakeCall(string number, string filepath, string PORT = "COM3")
{
SerialPort serialPort = new SerialPort();
serialPort.PortName = PORT;
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Handshake = Handshake.RequestToSend;
serialPort.DtrEnable = true;
serialPort.RtsEnable = true;
serialPort.NewLine = System.Environment.NewLine;
serialPort.Open();
Console.WriteLine("OPEN");
if (serialPort.IsOpen)
{
Console.WriteLine("OPENED");
serialPort.WriteLine(@"AT" + (char)(13));
Thread.Sleep(200);
//serialPort.WriteLine("AT+CMGF=1" + (char)(13));
Thread.Sleep(200);
serialPort.WriteLine(@"ATD" + number + ";\r");
Thread.Sleep(30000);
serialPort.Write("AT+VTX" + System.Convert.ToChar(13).ToString());
bool MSwitch = false;
byte[] buffer = new byte[20000];
FileStream strm = new FileStream(filepath, System.IO.FileMode.Open);
MemoryStream ms = new MemoryStream();
int count = ms.Read(buffer, 44, buffer.Length - 44);
BinaryReader rdr = new BinaryReader(strm);
while (!MSwitch)
{
byte[] bt = new byte[1024];
bt = rdr.ReadBytes(1024);
if (bt.Length == 0)
{
MSwitch = true;
break;
}
//This line through exception but not in first loop iteration but after few iterations
serialPort.Write(bt, 0, bt.Length);
}
}
}
我也有同样的问题。