DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   TAPI (http://www.daniweb.com/forums/thread141152.html)

TheBeast32 Aug 19th, 2008 4:53 pm
TAPI
 
Hi, I was wondering how to use TAPI in C++ to communicate with my modem. How would I accomplish this? I'm not using Visual C++. I'm using dev-c++ 4.9.9.2.

TheBeast32 Aug 20th, 2008 12:26 am
Re: TAPI
 
Anyone?

Salem Aug 20th, 2008 1:37 am
Re: TAPI
 
What do you mean "how"?

How I would do it would be
- STW for tutorials and examples
- Read the manual pages
- Try some examples
- Do some design work on the system I want to implement
- Write some code, then test it.
And so on.

Same as any other software problem really. The "TAPI" and "C++" isn't special in that respect.

TheBeast32 Aug 20th, 2008 1:49 am
Re: TAPI
 
By "How", I mean I looked for like an hour finding only stuff about .Net, and was wondering what the code would be, what libraries I might have to get, and so on. Like I said before, I'm using Dev-C++ 4.9.9.2, so anything that could be compiled with that IDE would help me a lot.

Salem Aug 20th, 2008 1:54 am
Re: TAPI
 
C++ doesn't care whether your IDE is "Visual" or "Dev".
Again, if you've already found some C++ code, you're already like 95%+ of the way there.

TheBeast32 Aug 20th, 2008 2:02 am
Re: TAPI
 
How would you compile this in Dev?

using System;
using System.Collections.Generic;
using System.Text;
using JulMar.Tapi3;

namespace TestTapi
{
  class Program
  {
      static void Main(string[] args)
      {
        TTapi tapi = new TTapi();
        TCall call = null; TAddress modemAddr = null;

        tapi.Initialize();
        tapi.TE_CALLNOTIFICATION += delegate(object sender, TapiCallNotificationEventArgs e) 
        {
            Console.WriteLine("New call {0} detected from {1}", e.Call.ToString(), e.Event);
        };
        tapi.TE_CALLSTATE += delegate(object sender, TapiCallStateEventArgs e)
        {
            Console.WriteLine("{0}:{4} has changed state to {1} due to {2} - current={3}:{5}",
                  e.Call, e.State, e.Cause, e.Call == call, e.Call.GetHashCode(), (call != null) ? call.GetHashCode() : 0);
            if (e.State == CALL_STATE.CS_INPROGRESS && e.Call == call)
            {
              Console.WriteLine("Dropping call");
              e.Call.Disconnect(DISCONNECT_CODE.DC_NORMAL);
            }
        };

        foreach (TAddress addr in tapi.Addresses)
        {
            if (String.Compare(addr.ServiceProviderName, "unimdm.tsp", true) == 0 &&
              addr.QueryMediaType(TAPIMEDIATYPES.AUDIO))
              modemAddr = addr;
        }

        if (modemAddr != null)
        {
            Console.WriteLine("{0} = {1} ({3}) [{2}]", modemAddr.AddressName, modemAddr.State, modemAddr.ServiceProviderName, modemAddr.DialableAddress);
            modemAddr.Monitor(TAPIMEDIATYPES.AUDIO);
            ConsoleKey ki = ConsoleKey.A;

            while (ki != ConsoleKey.Q)
            {
              // Flip the auto-destroy flag
              if (ki == ConsoleKey.D)
              {
                  tapi.AutoDestroyCalls = !tapi.AutoDestroyCalls;
                  Console.WriteLine("Set AutoDestroy to {0}", tapi.AutoDestroyCalls);
              }
              // List existing calls
              else if (ki == ConsoleKey.L)
              {
                  foreach (TCall _call in modemAddr.EnumerateCalls())
                  {
                    Console.WriteLine("Existing call found: {0}:{1}", _call, _call.GetHashCode());
                    _call.Dispose(); // Go ahead and dump it
                  }
              }
              // Create a new call
              else
              {
                  call = modemAddr.CreateCall("5551213", LINEADDRESSTYPES.PhoneNumber, TAPIMEDIATYPES.DATAMODEM);
                  Console.WriteLine("Created new call {0}:{1}", call, call.GetHashCode());
                  try
                  {
                    // This will fail if existing call interface is still around (i.e. not disposed)
                    call.Connect(false);
                  }
                  catch (TapiException ex)
                  {
                    Console.WriteLine(ex.Message);
                  }
              }
              Console.WriteLine("Press a key to try another call.. Q to quit");
              ki = Console.ReadKey().Key;
            }
        }

        // This will destroy any outstanding interfaces
        tapi.Shutdown();

        // Call should be disposed here.. state will be CS_UNKNOWN
        if (call != null)
            Console.WriteLine("{0} {1}", call, call.CallState);
      }
  }

Salem Aug 20th, 2008 2:04 am
Re: TAPI
 
I thought you have C++ examples as well as .net examples.

TheBeast32 Aug 20th, 2008 2:08 am
Re: TAPI
 
OOOOOOOPSSSSSSSSSSS, I'm StUPID. No i didn't. I don't know why I put that........:$ :$ :$
I'm an idiot.......................

Salem Aug 20th, 2008 1:14 pm
Re: TAPI
 
After a brief search, some source code in C++
http://www.julmar.com/tapi/

TheBeast32 Aug 20th, 2008 4:32 pm
Re: TAPI
 
Where can I get the SDK for the samples here http://www.tapi.info/default.aspx/TAPI/PSDKSamples.html


All times are GMT -4. The time now is 2:18 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC