C#控制DTA-115卡
由于公司新上的DTV产品线标准多,型号多,产量大,最重要的是经验还处于学习总结阶段,所以根据设备供应商的建议建了个中央信号源,专门购买了个 机柜放在中心机房,采购了一批Dectek的DTA-115卡来作为DVB-C,DVB-T,ATSC和ISDB-T的信号源。这样就带来了管理的麻烦, 需要改点什么必须使用远程桌面管理,这样换个session就看不见管理界面了,对多用户管理造成不便,每台公共机只插了两块卡,普通用户根本不知道想更 改某块卡的参数的时候需要连接哪台公共机,并且把远程桌面开放给普通用户还会带来安全等问题。
所以就考虑结合公司实际情况,自己写一套 DTA-115的管理程序,利用现有已实现的EOfficeAgent中的IPMSG模块进行管理,这样用户只需要使用飞鸽给EOfficeAgent发 送一条命令,相应的设置就会立刻更改,而不需要知道自己想更改的设置所在的位置。
这段代码是控制DTA-115的demo,测试已经可以跑得很好了。抛砖引玉。
可惜,CMMB那块烂卡,没办法这么做。
1
namespace 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(115, 0) == 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
namespace DTA115_test2
{3
class Program4
{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
try11
{12
if (Dvc0.AttachToType(115, 0) == 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
//初始化FIFO27
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



浙公网安备 33010602011771号