日期:2014-05-18  浏览次数:21001 次

请教大家vc转c#怎么写
#define MESSAGE_HAVE_CID_FSK 0x0000
有FSK方式的主叫事件


▲ GX_GetFskCallerID
函数原型: unsigned short GX_GetFskCallerID(
unsigned short ChannelNo,char*DateTime,char *TelNo,
char *Name)
功 能: 获取FSK主叫信息,只有在收到MESSAGE_HAVE_CID_FSK时,调用该函数,其返回值才有意义。该函数所返回的主叫信息是经过处理的信息,即已经分解成主叫日期时间、主叫号码和主叫名称等。
参 数: ChannelNo 通道的逻辑号码。
DateTime 主叫时间,字符串型,如果没有主叫时间,则返回空串。
TelNo 主叫号码,字符串型,如果没有主叫号码,则返回空串。 
Name 主叫名称,字符串型,如果没有主叫名称,则返回空串。
返 回: 如果调用成功,返回0
注 释: 该函数适用于包括中继模块通道、用户模块通道、录音模块通道
对于DateTime、Telno和Name,用户提供的缓存区长度一定要大于相应的最大可显位数,建议最好为MAX_CID_NUM。调用后一定要检测返回值。

------------------------------------------------
以上程序在c#中,不会写,请高手帮帮忙。


------解决方案--------------------
C# code
using System;
using System.Runtime.InteropServices;
using System.Text;

namespace ConsoleApplication1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            StringBuilder sb1 = new StringBuilder(100);
            StringBuilder sb2 = new StringBuilder(100);
            StringBuilder sb3 = new StringBuilder(100);
            GX_GetFskCallerID(MESSAGE_HAVE_CID_FSK, sb1, sb2, sb3);
            Console.ReadKey(true);
        }


        [DllImport("TheCppLib.dll")]
        public static extern double add(ref double a, ref double b);

        public const int MESSAGE_HAVE_CID_FSK = 0;
        [DllImport("TheCppLib.dll", EntryPoint = "GX_GetFskCallerID",CharSet = CharSet.Ansi)]
        public static extern ushort GX_GetFskCallerID(ushort ChannelNo,
                                                      StringBuilder DateTime,
                                                      StringBuilder TelNo,
                                                      StringBuilder Name);
    }
}