C#控制DTA-115卡

由于公司新上的DTV产品线标准多,型号多,产量大,最重要的是经验还处于学习总结阶段,所以根据设备供应商的建议建了个中央信号源,专门购买了个 机柜放在中心机房,采购了一批Dectek的DTA-115卡来作为DVB-C,DVB-T,ATSC和ISDB-T的信号源。这样就带来了管理的麻烦, 需要改点什么必须使用远程桌面管理,这样换个session就看不见管理界面了,对多用户管理造成不便,每台公共机只插了两块卡,普通用户根本不知道想更 改某块卡的参数的时候需要连接哪台公共机,并且把远程桌面开放给普通用户还会带来安全等问题。

所以就考虑结合公司实际情况,自己写一套 DTA-115的管理程序,利用现有已实现的EOfficeAgent中的IPMSG模块进行管理,这样用户只需要使用飞鸽给EOfficeAgent发 送一条命令,相应的设置就会立刻更改,而不需要知道自己想更改的设置所在的位置。

这段代码是控制DTA-115的demo,测试已经可以跑得很好了。抛砖引玉。

可惜,CMMB那块烂卡,没办法这么做。

 1namespace DTA115_test
 2{
 3    class Program
 4    {
 5        static DtDevice Dvc0=new DtDevice();
 6        const Int32 BufSize = 1 << 16;
 7        const Int32 IniLoad = (1 << 20* 8;
 8        static void Main(string[] args)
 9        {
10            try
11            {
12                if (Dvc0.AttachToType(1150== DTAPI_RESULT.OK)
13                {
14                    FileInfo TSFile = new FileInfo(@"R:\Video_Teletext.trp");
15                    FileStream TSStream = TSFile.OpenRead();
16                    DtOutpChannel TsOut = new DtOutpChannel();
17                    if (TsOut.AttachToPort(Dvc0, 2== DTAPI_RESULT.OK)
18                    {
19                        Console.WriteLine("OK!");
20                        TsOut.SetTxMode(DTAPI.TXMODE_188, 1);
21                        //DVB-T工作模式
22                        TsOut.SetModControl(DTAPI.MOD_DVBT, DTAPI.MOD_7_8, 
23                            DTAPI.MOD_DVBT_8MHZ | DTAPI.MOD_DVBT_8K 
24                            | DTAPI.MOD_DVBT_QAM64 | DTAPI.MOD_DVBT_G_1_4, 
25                            -1);
26                        //初始化FIFO
27                        TsOut.SetTxControl(DTAPI.TXCTRL_HOLD);
28                        byte[] Buf = new byte[BufSize];
29                        Int32 Load = 0;
30                        int NumBytes = TSStream.Read(Buf, 0, BufSize);
31                        while ((Load < IniLoad) && (NumBytes != 0))
32                        {
33                            TsOut.Write(Buf, NumBytes);
34                            Load += NumBytes;
35                            NumBytes = TSStream.Read(Buf, 0, BufSize);
36                        }

37                        //设置频点
38                        TsOut.SetRfControl(698000000);
39                        //设置衰减
40                        TsOut.SetOutputLevel(-180);
41                        //开始发射
42                        TsOut.SetTxControl(DTAPI.TXCTRL_SEND);
43                        while (NumBytes != 0)
44                        {
45                            TsOut.Write(Buf, NumBytes);
46                            NumBytes = TSStream.Read(Buf, 0, BufSize);
47                        }

48                        //卸载设备 
49                        TsOut.Detach(DTAPI.INSTANT_DETACH);
50                    }

51                }

52            }

53            catch (Exception e)
54            {
55                Console.Write(e.Message);
56            }

57        }

58    }

59}

60

 

 

posted @ 2009-06-15 18:49  Junuh  阅读(662)  评论(0编辑  收藏  举报