좋아, 내 머리가 내게 단절되었습니다. 내가하려고하는 일은 컴퓨터가 너무 많은 링을 울린 후에 내 컴퓨터에 전화를 걸 수있는 프로그램을 작성하는 것입니다. 이 시점에서 나는 내 컴퓨터와 대화하고 컴퓨터 음성 인식 능력을 활용할 수있을 것이다. 그러나 내 컴퓨터는 전화를 통해 "마이크 입력"오디오 소스로 음성을 수신하지 못합니다. 아마도 COM4 포트가 모뎀이 릴레이 소스로 사용하고 있기 때문일 것입니다.C# 모뎀 및 AT 명령
현재 내 컴퓨터에서 전화를 걸고 내 컴퓨터에서 전화를받을 수 있습니다. 컴퓨터가 현재 영광스러운 전화의 역할을합니다. 두 명의 사용자가 서로를 앞뒤로 부를 수는 있지만 PC는 어색한 날짜에 제 3의 사람처럼 앉아있을 수 있습니다. 저는 컴퓨터가 발신자의 말을 듣는 데 더 적극적으로 참여하기를 원합니다.
관계없이 컴퓨터를 발신자 음성으로 듣게하는 코드를 망쳐 놓을 수는 없습니다. 나는 AT 명령에서 얼음을 깬다. 그래서 나에게 부드럽게 가라.
다음은 from1의 코드입니다. 어떤 도움이라도 좋을 것입니다. 고맙습니다!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
using System.IO;
namespace VoiceModem
{
public partial class Form1 : Form
{
byte[] buffer;
public Form1()
{
InitializeComponent();
}
SerialPort modemPort;
int bufferLoc;
string strBuf;
FileStream file;
StreamWriter logfile;
//note to self: the max port speed is listed at 115200
private void btnCALL_Click(object sender, System.EventArgs e)
{
string PHONENUMBER = "ATD=" + this.textBox1.Text + "\r";
//File.Close("raw.txt", FileMode.Create);
//C:\Documents and Settings\Commander\Desktop
file = File.Open("raw.txt", FileMode.Create);
logfile = File.CreateText("log.txt");
buffer = new byte[10 * 1024];
modemPort = new SerialPort("COM4", 112500, Parity.None, 8, StopBits.One);
modemPort.ReadTimeout = SerialPort.InfiniteTimeout;
modemPort.DataReceived += new SerialDataReceivedEventHandler(modemPort_DataReceived);
modemPort.Open();
modemPort.Write("AT\r"); //OK
modemPort.Write("ATA\r"); //ANSWERING IN VOICE MODE *** NO CARRIER
Thread.Sleep(500);
modemPort.Write("AT+FCLASS=8\r"); ///this should be voice here
Thread.Sleep(500);
modemPort.Write(PHONENUMBER); //DIAL number that D equals
// modemPort.Write("ATH\r"); //HANG UP IN VOICE MODE //ERROR
//modemPort.Write("AT+VSM=1\r");
// modemPort.Write("AT+VTX\r"); //VOICE TRANSMIT MODE //ERROR
// modemPort.Write("AT+VLS=5\r");
Thread.Sleep(500);
modemPort.Write("AT+VRX\r"); //VOICE RECEIVE MODE
Thread.Sleep(500);
modemPort.Write("AT+VLS=3+RX\r");
//VLS
//0 - Telephone Line Select (Go on hook)
//2 - Speakers
//3 - Microphone
//4 - Telephone Line Select + Samples routed to/from Speakers/Mic in TX/RX modes
//6 - Speakerphone
}
private void button1_Click(object sender, System.EventArgs e)
{
//C:\Documents and Settings\Commander\Desktop
file = File.Open("raw.txt", FileMode.Create);
logfile = File.CreateText("log.txt");
buffer = new byte[10*1024];
modemPort = new SerialPort("COM4",112500, Parity.None, 8,StopBits.One);
modemPort.ReadTimeout = SerialPort.InfiniteTimeout;
modemPort.DataReceived+= new SerialDataReceivedEventHandler(modemPort_DataReceived);
modemPort.Open();
modemPort.Write("AT\r"); //OK
//modemPort.Write("ATA\r"); //ANSWERING IN VOICE MODE *** NO CARRIER
modemPort.Write("AT+FCLASS=8\r");
// "ATD=6022626151;\r"
//modemPort.Write(this.textBox1.Text);
//ATD4412345679;
//Dmn ATDmn will dial a phone number where m is the modifier: L, W, ,, ;, @, or S.
//It will dial the telephone number n.
// string str = "Hello " + userName + ". Today is " + date + ".";
string PHONENUMBER = "ATD=" + this.textBox1.Text + "\r";
Thread.Sleep(500);
modemPort.Write(PHONENUMBER); //DIAL number that D equals
Thread.Sleep(500);
modemPort.Write("ATH\r"); //HANG UP IN VOICE MODE //ERROR
//modemPort.Write("AT+VSM=1\r");
Thread.Sleep(500);
modemPort.Write("AT+VLS=?\r");
Thread.Sleep(500);
modemPort.Write("AT+VTX\r"); //VOICE TRANSMIT MODE //ERROR
//modemPort.Write("AT+VLS=1\r");
Thread.Sleep(500);
buffer = new byte[10*1024];
modemPort.Write("AT+VRX\r"); //VOICE RECEIVE MODE
//modemPort.Write("AT+VRX\r");
}
void modemPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs args)
{
int x = modemPort.BytesToRead;
modemPort.Read(buffer,0,x);
file.Write(buffer,0,x);
logfile.WriteLine(x.ToString()+args.EventType.ToString());
}
private void button2_Click(object sender, System.EventArgs e)
{
modemPort.Close();
file.Close();
logfile.Close();
}
private void button3_Click(object sender, System.EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
//Form2.show();
}
private void button4_Click(object sender, System.EventArgs e)
{
this.richTextBox1.Text = System.IO.File.ReadAllText("raw.txt");
}
private void button5_Click(object sender, System.EventArgs e)
{
this.richTextBox2.Text = System.IO.File.ReadAllText("log.txt");
}
private void NUMBER1_Click(object sender, System.EventArgs e)
{
//tBox1.Text += "a";
this.textBox1.Text += "1";
}
private void NUMBER2_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "2";
}
private void NUMBER3_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "3";
}
private void NUMBER4_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "4";
}
private void NUMBER5_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "5";
}
private void NUMBER6_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "6";
}
private void NUMBER7_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "7";
}
private void NUMBER8_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "8";
}
private void NUMBER9_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "9";
}
private void NUMBER0_Click(object sender, System.EventArgs e)
{
this.textBox1.Text += "0";
}
private void btnREDIAL_Click(object sender, System.EventArgs e)
{
buffer = new byte[10 * 1024];
modemPort = new SerialPort("COM4", 112500, Parity.None, 8, StopBits.One);
modemPort.ReadTimeout = SerialPort.InfiniteTimeout;
modemPort.DataReceived += new SerialDataReceivedEventHandler(modemPort_DataReceived);
modemPort.Open();
modemPort.Write("AT\r"); //OK
modemPort.Write("ATDL\r"); //OK
}
private void Form1_Load(object sender, System.EventArgs e)
{
this.textBox1.Focus();
}
private void btnANSWER_Click(object sender, System.EventArgs e)
{
//C:\Documents and Settings\Commander\Desktop
file = File.Open("raw.txt", FileMode.Create);
logfile = File.CreateText("log.txt");
buffer = new byte[10 * 1024];
modemPort = new SerialPort("COM4", 112500, Parity.None, 8, StopBits.One);
modemPort.ReadTimeout = SerialPort.InfiniteTimeout;
modemPort.DataReceived += new SerialDataReceivedEventHandler(modemPort_DataReceived);
modemPort.Open();
modemPort.Write("AT\r"); //OK
Thread.Sleep(500);
modemPort.Write("ATA\r"); //ANSWERING then gives beep-boops
Thread.Sleep(500);
//modemPort.Write("AT+VLS=1");
//modemPort.Write("AT+FCLASS=8\r");
// string str = "Hello " + userName + ". Today is " + date + ".";
// string PHONENUMBER = "ATD=" + this.textBox1.Text + "\r";
// modemPort.Write(PHONENUMBER); //DIAL number that D equals
//modemPort.Write("ATH\r"); //HANG UP IN VOICE MODE //ERROR
//modemPort.Write("AT+VSM=1\r");
//modemPort.Write("AT+++\r");// disconnects data mode to allow for voice mode
//voice mode is activated using ata
modemPort.Write("AT+VRX\r");
//modemPort.Write("AT+VTX\r"); //VOICE TRANSMIT MODE //ERROR
//modemPort.Write("AT+VLS=1\r");
// modemPort.Write("ATH\r"); //HANG UP IN VOICE MODE //ERROR
//modemPort.Write("AT+VRX\r");
//modemPort.Write("ATA\r"); //answer the call
}
private void btnHANGUP_Click(object sender, System.EventArgs e)
{
modemPort.Close();
}
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
//int iPhone = 7065551212;
//string strPhone = string.Format("{0:(###) ###-####}", iPhone);
// this.textBox1.Mask = "(999) 000-0000";
}
private void textBox1_Leave(object sender, System.EventArgs e)
{
// Reset the colors and selection of the TextBox after focus is lost.
string x = textBox1.Text;
double y = Double.Parse(x);
textBox1.Text = String.Format("{0:(###) ###-####}", y);
textBox1.ForeColor = Color.Black;
textBox1.BackColor = Color.White;
textBox1.Select(0, 0);
}
/*
* ACTIVE PROFILE:
E0 L1 M1 Q0 T V1 X4 &C1 &D2 &G0 &P0
S00:000 S01:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:060 S08:002
S10:014 S12:050 S29:070
STORED PROFILE 0:
E0 L1 M1 Q0 T V1 X4 &C1 &D2 &G0 &P0
S00:000 S02:043 S06:002 S07:050 S08:002 S10:014 S12:050 S29:070
*
*
* DIAG <2A4D3263 0=10>
DIAG <2A4D3263 1=0>
DIAG <2A4D3263 60=1>
* */
}
}
+1. 1996 년 이래로 'AT'명령을 보지 못했습니다. 아 .. 추억. 'zmodem'과'kermit' 프로토콜에 관한 글이 있는지 궁금합니다. – ja72
나는 동의한다, 어셈블러 오래된 학교와 같지만 그것이 작동 할 때 정말로 예리하다! 내 VR (음성 인식) 프로그램이 당신의 세계를 뒤흔들 것입니다. 현재, 그것은 내 연구실의 거의 모든 측면을 제어합니다. –