Как сделать идентификатор звонящего в C#.net
Я знаю, что это ответ на вопрос, однако я хочу знать, необходимое оборудование и как настроить.
Я пытаюсь создать систему доставки на вынос, в которой пользователи звонят, и их телефонный номер записывается на WINFORM.
Я погуглил, и он говорит, что мне нужно использовать TAPI API. Это нормально, но нужно ли мне что-то подключать к ПК или будет работать только TAPI?
Эта ссылка объясняет это в VB.net. Я ищу его в C#.net. Я также прошел через ссылки, представленные здесь.
Но нигде это не объясняет настройку. Поэтому, пожалуйста, помогите.
2 ответа
Первым делом
- Посмотрите, поддерживает ли ваше оборудование идентификатор звонящего
- Добавьте управление последовательным портом, установите для него какой-либо коммуникационный порт, к которому подключен модем, и просмотрите идентификационный номер CALLER, затем отреагируйте
Чтобы увидеть, поддерживает ли ваш модем Caller ID, откройте терминал последовательного порта (мне нравится putty) и установите его на com-порт вашего модема, затем позвоните по номеру телефона, подключенному к этому модему, вы должны увидеть что-то вроде RING 5555555555 (где 5555555555 номер телефона человека, звонящего вам)
Возможно, вам придется включить идентификатор вызывающего абонента для этого модема (если так)
1) Откройте панель управления "Телефон и модем"
2) Перейдите на вкладку "Модемы"
3) Выберите свой модем в списке (если он еще не выбран)
4) Нажмите кнопку "Свойства"
5) Перейдите на вкладку "Дополнительно"
6) Введите "#CID=1" в поле редактирования "Дополнительные команды инициализации". Примечание: замените "#CID=1" командой для включения идентификатора вызывающего абонента на вашем модеме. Не включайте часть команды "AT". Не включить цитаты 7) Нажмите OK
8) Нажмите ОК
9) перезагрузите компьютер
Вот некоторый код для взаимодействия с последовательным портом в C# (если вам это нужно)
public SerialPort sp;
string dataReceived = string.Empty;
private delegate void SetTextDeleg(string text);
private void FormLoad()
{
sp = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
this.sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
sp.Open();
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
Thread.Sleep(500);
string x = sp.ReadLine(); // will read to the first carriage return
this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { x });
}
catch
{ }
}
private void si_DataReceived(string data)
{
dataReceived = data.Trim();
// Do whatever with the data that is coming in.
}
Кроме того, я только что искал amazon для "Caller ID Modem", и, кажется, есть много от 10 до 20 долларов (США), которые поддерживают это точное использование. Я бы порекомендовал Trendnet TFM-561U
Если вы используете телефон и факс-модем, просто подключите свою телефонную линию к модему.
Далее на ваших окнах перетащите-n-drop SerialPort
контролировать и инициализировать его.
this.serialPort1.PortName = "COM3";
this.serialPort1.BaudRate = 9600;
this.serialPort1.DataBits = 8;
this.serialPort1.RtsEnable = true;
this.serialPort1.DataReceived += serialPort1_DataReceived;
this.serialPort1.Open();
Передайте следующую команду модему, чтобы активировать Caller-ID
this.serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine);
Обработайте событие DataReceived и отобразите полученные данные.
void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
richTextBox1.Text += this.serialPort1.ReadLine();
}
Выход:
RING //On 1st Ring
DATE = xxxxx //On 2nd Ring
TIME = xxxx
NMBR = xxxxxxxxx
RING //On 3rd Ring
RING //On 4th Ring
PS Если телефонная линия отправляет тональные сигналы DTMF в качестве идентификатора вызывающего абонента, вам необходим преобразователь DTMF в FSK для определения номера, иначе вы получите звонки, но не номер.