| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> delphi >> Delphi之三彙模擬語音卡(SHT-8B/PCI/FAX)可複用源碼
 

Delphi之三彙模擬語音卡(SHT-8B/PCI/FAX)可複用源碼

2007-09-15 05:02:24  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  Delphi之三彙模擬語音卡(SHT-8B/PCI/FAX)可複用源碼

  作者:成曉旭

  設計簡介:

  1、 設計思路請參考本站Blog的另一篇文章:“Delphi之東進模擬語音卡(D160A)可複用源碼”;鏈接http://blog.csdn.net/CXXSoft/archive/2006/08/23/1108211.aspx

  2、 其實,仔細對比,你會發現這兩種卡的代碼類方法簽名幾乎99%是一樣的,也就是說,這兩都之間,還需要更進一步的抽象,以解決“重複代碼”或者“相似代碼”的問題。

  3、 更高層次的抽象,請參考我的設計文檔。

  4、 類圖(以後補上):

  5、 卡類源碼:

  
王朝网络
//------------------------------------------------------------------------------

  
王朝网络
//

  
王朝网络
// 産品名稱: 成曉旭的個人軟件Delphi源碼庫

  
王朝网络
// 産品版本: CXXSoft delphi code source lib 2.0

  
王朝网络
// 模塊名稱: Delphi之三彙模擬語音卡類

  
王朝网络
// 模塊描述:

  
王朝网络
// 單元文件: unSHCard8B.pas

  
王朝网络
// 開發作者: 成曉旭

  
王朝网络
// 備注: 任何人使用此文件時,請保留此段自述文件,謝謝!

  
王朝网络
// 開發時間: 2003-12-03

  
王朝网络
// 修改曆史:

  
王朝网络
// 修改描述:

  
王朝网络
//------------------------------------------------------------------------------

  
王朝网络
unit unSHCard8B;

  
王朝网络


  
王朝网络
interface

  
王朝网络
uses

  
王朝网络
Windows,

  
王朝网络
//unDJTC08a32,unDJNewSig,

  
王朝网络
unBaseDefine,

  
王朝网络
//unDJ160ADefine,unDJChanne160A,

  
王朝网络
unShpa3api,unSHChanne18B,unSH8BDefine;

  
王朝网络
type

  
王朝网络
TCXXCommCard8B = class(TObject)

  
王朝网络
private

  
王朝网络


  
王朝网络
ChannelNumber:Word;

  
王朝网络
channelObject:array of TCXXSHChannel8B;

  
王朝网络
OnCardChannelState:TTrunkStatusEvent;

  
王朝网络


  
王朝网络
procedure ReleaseCommDevice();

  
王朝网络
function GetChannelObjectOrder(const aChannelID:Word):Word;

  
王朝网络
function InitChannel():boolean;

  
王朝网络
public

  
王朝网络


  
王朝网络
constructor Create(const trunkEvent:TTrunkStatusEvent);

  
王朝网络
destructor Destroy(); override;

  
王朝网络


  
王朝网络
function LoadCommDevice(const loadAll:boolean=false):boolean;

  
王朝网络
function Startup():boolean;

  
王朝网络
function GetAFreeChannel():Word;

  
王朝网络
function GetChannelNumber():Word;

  
王朝网络
function DialPhone(const aChannelID:Word;const DialPhoneNumber:PChar):boolean;

  
王朝网络
function HangUp(const aChannelID:Word):boolean;

  
王朝网络


  
王朝网络
end;

  
王朝网络


  
王朝网络


  
王朝网络
implementation

  
王朝网络


  
王朝网络
const

  
王朝网络
SH_ConfigFile = 'C:ShCtiShConfig.ini';

  
王朝网络
SH_IndexFile = 'C:ShCtiShIndex.ini';

  
王朝网络


  
王朝网络
王朝网络
...{ TCXXCommCard8B }

  
王朝网络
constructor TCXXCommCard8B.Create(const trunkEvent:TTrunkStatusEvent);

  
王朝网络
begin

  
王朝网络
ChannelNumber := 0;

  
王朝网络
Self.OnCardChannelState := trunkEvent;

  
王朝网络
end;

  
王朝网络


  
王朝网络
destructor TCXXCommCard8B.Destroy;

  
王朝网络
var

  
王朝网络
Loop:Word;

  
王朝网络
begin

  
王朝网络
if (Length(channelObject) > 0) and (channelNumber > 0) then

  
王朝网络
begin

  
王朝网络
for Loop := 0 to ChannelNumber - 1 do

  
王朝网络
begin

  
王朝网络
if Assigned(channelObject[Loop]) then

  
王朝网络
begin

  
王朝网络
channelObject[Loop].Free();

  
王朝网络
channelObject[Loop] := nil;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络
ReleaseCommDevice();

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.DialPhone(const aChannelID: Word;

  
王朝网络
const DialPhoneNumber: PChar): boolean;

  
王朝网络
var

  
王朝网络
K:Word;

  
王朝网络
begin

  
王朝网络
Result := false;

  
王朝网络
K := GetChannelObjectOrder(aChannelID);

  
王朝网络
if (K <> ErrorTrunkNumber) and (Assigned(channelObject[K])) then

  
王朝网络
begin

  
王朝网络
Result := channelObject[K].DialPhone(DialPhoneNumber);

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXCommCard8B.ReleaseCommDevice();

  
王朝网络
begin

  
王朝网络
SsmCloseCti() ;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.GetAFreeChannel(): Word;

  
王朝网络
var

  
王朝网络
Loop:Word;

  
王朝网络
begin

  
王朝网络
Result := ErrorTrunkNumber;

  
王朝网络
for Loop := Low(channelObject) to High(channelObject) do

  
王朝网络
begin

  
王朝网络
if NOT channelObject[Loop].CheckDialOutEnabled() then continue;

  
王朝网络
if (channelObject[Loop].GetChannelStatus() = atsFree) then

  
王朝网络
begin

  
王朝网络
Result := channelObject[Loop].GetChannelID();

  
王朝网络


  break;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.GetChannelNumber(): Word;

  
王朝网络
begin

  
王朝网络
Result := channelNumber;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.GetChannelObjectOrder(

  
王朝网络
const aChannelID: Word): Word;

  
王朝网络
var

  
王朝网络
Loop:Word;

  
王朝网络
begin

  
王朝网络
Result := ErrorTrunkNumber;

  
王朝网络
for Loop := Low(channelObject) to High(channelObject) do

  
王朝网络
begin

  
王朝网络
if (channelObject[Loop].GetChannelID = aChannelID) then

  
王朝网络
begin

  
王朝网络
Result := Loop;

  
王朝网络


  break;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.HangUp(const aChannelID: Word): boolean;

  
王朝网络
var

  
王朝网络
K:Word;

  
王朝网络
begin

  
王朝网络
Result := false;

  
王朝网络
K := GetChannelObjectOrder(aChannelID);

  
王朝网络
if (K <> ErrorTrunkNumber) and (Assigned(channelObject[K])) then

  
王朝网络
begin

  
王朝网络
channelObject[K].ChannelHangUp();

  
王朝网络
Result := true;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.LoadCommDevice(const loadAll:boolean): boolean;

  
王朝网络
const

  
王朝网络
loadEmpty = true;

  
王朝网络
begin

  
王朝网络
Result := false;

  
王朝网络
if SsmStartCti(SH_ConfigFile,SH_IndexFile) <> 0 then

  
王朝网络
begin

  
王朝网络
TCXXSHChannel8B.InformInvodeError();

  
王朝网络
Exit;

  
王朝网络
end;

  
王朝网络
if(SsmGetMaxUsableBoard() <> SsmGetMaxCfgBoard()) then

  
王朝网络
begin //部分板卡初始化失敗,取出失敗原因

  
王朝网络
TCXXSHChannel8B.InformInvodeError();

  
王朝网络
Exit;

  
王朝网络
end;

  
王朝网络
Result := InitChannel();

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.Startup(): boolean;

  
王朝网络
var

  
王朝网络
Loop:integer;

  
王朝网络
begin

  
王朝网络
for Loop := 0 to channelNumber - 1 do

  
王朝网络
begin

  
王朝网络
channelObject[Loop].Startup();

  
王朝网络
end;

  
王朝网络
Result := true;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXCommCard8B.InitChannel():boolean;

  
王朝网络
var

  
王朝网络
number,Loop:integer;

  
王朝网络
begin

  
王朝网络
Result := false;

  
王朝网络
number := SsmGetMaxCh();

  
王朝网络
if (number < 0) then Exit;

  
王朝网络
ChannelNumber := number;

  
王朝网络
SetLength(channelObject,channelNumber);

  
王朝网络
for Loop := 0 to channelNumber - 1 do

  
王朝网络
begin

  
王朝网络
channelObject[Loop] := TCXXSHChannel8B.Create(OnCardChannelState);

  
王朝网络
channelObject[Loop].CreateCommChannel(Loop);

  
王朝网络
end;

  
王朝网络
Result := true;

  
王朝网络
end;

  
王朝网络


  
王朝网络
end.

  
王朝网络


  6、 通道類源碼:

  
王朝网络
//------------------------------------------------------------------------------

  
王朝网络
//

  
王朝网络
// 産品名稱: 成曉旭的個人軟件Delphi源碼庫

  
王朝网络
// 産品版本: CXXSoft delphi code source lib 2.0

  
王朝网络
// 模塊名稱: Delphi之三彙模擬語音卡通道類

  
王朝网络
// 模塊描述:

  
王朝网络
// 單元文件: unSHChanne18B.pas

  
王朝网络
// 開發作者: 成曉旭

  
王朝网络
// 備注: 任何人使用此文件時,請保留此段自述文件,謝謝!

  
王朝网络
// 開發時間: 2003-12-01

  
王朝网络
// 修改曆史:

  
王朝网络
// 修改描述:

  
王朝网络
//------------------------------------------------------------------------------

  
王朝网络
unit unSHChanne18B;

  
王朝网络


  
王朝网络
王朝网络
...{$DEFINE ThreadChannel}

  
王朝网络


  
王朝网络
interface

  
王朝网络


  
王朝网络
uses

  
王朝网络
Windows,Classes,SysUtils,

  
王朝网络


  
王朝网络
unBaseDefine,unShpa3api,unSH8BDefine,

  
王朝网络
//unDJ160ADefine,

  
王朝网络
unDJTC08a32,unDJNewSig;

  
王朝网络


  
王朝网络
Type

  
王朝网络


  
王朝网络


  
王朝网络
王朝网络
...{$IFDEF ThreadChannel}

  
王朝网络
TCXXSHChannel8B = class(TThread)

  
王朝网络
王朝网络
...{$ELSE}

  
王朝网络
TCXXSHChannel8B = class(TObject)

  
王朝网络
王朝网络
...{$ENDIF}

  
王朝网络
private

  
王朝网络
channelType:TChannelType;

  
王朝网络
oldChannelState,channelState:TTrunkState;

  
王朝网络
channelID:Word;

  
王朝网络
phoneNumber:string;

  
王朝网络
dtmfString:string;

  
王朝网络
aCallerId:PAnsiChar;

  
王朝网络


  
王朝网络
isConntectd:boolean;

  
王朝网络


  
王朝网络
isDialOut:boolean;

  
王朝网络
aTrunkState:TTrunkStatus;

  
王朝网络


  
王朝网络
procedure ChannelProcessor();

  
王朝网络
procedure InformTrunkStatus(const aMsgFlag: TLVOperateFlag);

  
王朝网络


  
王朝网络
procedure ClearTrunkStatus();

  
王朝网络
procedure ClearChannelBuffer();

  
王朝网络
function CheckSigHangup():boolean;

  
王朝网络
function CheckCallIn():boolean;

  
王朝网络
function SwitchOnCallIn():boolean;

  
王朝网络


  
王朝网络
procedure ProcessCallInSuccess();

  
王朝网络
procedure ProcessDialSuccess();

  
王朝网络


  
王朝网络
procedure ProcessCheckDialSend();

  
王朝网络
procedure ProcessDialOut();

  
王朝网络


  
王朝网络
procedure Stop();

  
王朝网络


  
王朝网络
//三彙卡專用方法

  
王朝网络
function GetTrunkStateBySsm(const ssmState: integer): TTrunkState;

  
王朝网络
protected

  
王朝网络
王朝网络
...{$IFDEF ThreadChannel}

  
王朝网络
procedure Execute(); override;

  
王朝网络
王朝网络
...{$ENDIF}

  
王朝网络
public

  
王朝网络
strMessage:string;

  
王朝网络
OnChannelState:TTrunkStatusEvent;

  
王朝网络


  
王朝网络
constructor Create(const trunkEvent:TTrunkStatusEvent);

  
王朝网络
destructor Destroy();override;

  
王朝网络


  
王朝网络
procedure CreateCommChannel(const aChennelID: Word);

  
王朝网络
procedure Startup();

  
王朝网络


  
王朝网络
function GetChannelID():Word;

  
王朝网络
function GetChannelStatus():TTrunkState;

  
王朝网络
function GetChannelType():TChannelType;

  
王朝网络
function DialPhone(const DialPhoneNumber:PChar):boolean;overload;

  
王朝网络
function DialPhone(const DialPhoneNumber:PChar;const PreDialNumber:PChar):boolean;overload;

  
王朝网络
procedure ChannelHangUp();

  
王朝网络


  
王朝网络
function GetDialOut():boolean;

  
王朝网络


  
王朝网络
//三彙卡特性方法

  
王朝网络
function CheckDialOutEnabled():boolean;

  
王朝网络
class procedure InformInvodeError();

  
王朝网络
end;

  
王朝网络
implementation

  
王朝网络


  
王朝网络
王朝网络
...{ TCXXSHChannel8B }

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ChannelHangUp();

  
王朝网络
begin

  
王朝网络
isDialOut := false;

  
王朝网络
SsmHangUp(channelID);

  
王朝网络
ClearChannelBuffer();

  
王朝网络
ClearTrunkStatus();

  
王朝网络
InformTrunkStatus(lvofUpdate);

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ChannelProcessor();

  
王朝网络
var

  
王朝网络
ssmState:integer;

  
王朝网络
begin

  
王朝网络
// ssmState := SsmGetChState(channelID);

  
王朝网络
// channelState := GetTrunkStateBySsm(ssmState);

  
王朝网络
CheckCallIn();

  
王朝网络
case channelState of

  
王朝网络
atsFree:

  
王朝网络
begin

  
王朝网络
//

  
王朝网络
end;

  
王朝网络
atsCallIning:

  
王朝网络
begin

  
王朝网络
SwitchOnCallIn();

  
王朝网络
end;

  
王朝网络
atsCallInSuccess:

  
王朝网络
begin

  
王朝网络
if CheckSigHangup() then Exit;

  
王朝网络
ProcessCallInSuccess();

  
王朝网络
end;

  
王朝网络
atsCheckSendDial:

  
王朝网络
begin

  
王朝网络
ProcessCheckDialSend();

  
王朝网络
end;

  
王朝网络
atsDialing:

  
王朝网络
begin

  
王朝网络
ProcessDialOut();

  
王朝网络
end;

  
王朝网络
atsDialSuccess:

  
王朝网络
begin

  
王朝网络
if CheckSigHangup() then Exit;

  
王朝网络
ProcessDialSuccess();

  
王朝网络
strMessage := '撥號成功';

  
王朝网络
end;

  
王朝网络
atsHangOff:

  
王朝网络
begin

  
王朝网络
ChannelHangUp();

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络
if (oldChannelState <> channelState) then

  
王朝网络
begin

  
王朝网络
oldChannelState := channelState;

  
王朝网络
InformTrunkStatus(lvofUpdate);

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.CheckCallIn(): boolean;

  
王朝网络
begin

  
王朝网络
Result := false;

  
王朝网络
if(SsmGetChState(channelID)=2) then //檢測到振鈴信號

  
王朝网络
begin

  
王朝网络
SsmGetCallerId(channelID, aCallerId); //取出CALLERID信息

  
王朝网络
channelState := atsCallIning;

  
王朝网络
Result := true;

  
王朝网络
end;

  
王朝网络
王朝网络
...{

  
王朝网络
Result := RingDetect(channelID);

  
王朝网络
if Result then

  
王朝网络
begin

  
王朝网络
OffHook(channelID);

  
王朝网络
if isDialOut then

  
王朝网络
channelState := atsDialSuccess

  
王朝网络
else

  
王朝网络
channelState := atsCallIning;

  
王朝网络
end;

  
王朝网络
}

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.CheckSigHangup(): boolean;

  
王朝网络
begin

  
王朝网络
Result := false;

  
王朝网络
if (SsmGetChState(channelID) = S_CALL_PENDING) then

  
王朝网络
begin

  
王朝网络
strMessage := '對方已挂機';

  
王朝网络
InformTrunkStatus(lvofUpdate);

  
王朝网络
SsmStopPlay(channelID);

  
王朝网络
channelState := atsHangOff;

  
王朝网络
Result := true;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ClearTrunkStatus();

  
王朝网络
begin

  
王朝网络
channelState := atsFree;

  
王朝网络
oldChannelState := channelState;

  
王朝网络
phoneNumber := '';

  
王朝网络
dtmfString := '';

  
王朝网络
strMessage := '';

  
王朝网络
isConntectd := false;

  
王朝网络
end;

  
王朝网络


  
王朝网络
constructor TCXXSHChannel8B.Create(const trunkEvent:TTrunkStatusEvent);

  
王朝网络
begin

  
王朝网络
GetMem(aCallerId,50);

  
王朝网络
Self.OnChannelState := trunkEvent;

  
王朝网络
王朝网络
...{$IFDEF ThreadChannel}

  
王朝网络
Self.FreeOnTerminate := true;

  
王朝网络
inherited Create(true);

  
王朝网络
王朝网络
...{$ENDIF}

  
王朝网络
end;

  
王朝网络


  
王朝网络


  
王朝网络
destructor TCXXSHChannel8B.Destroy;

  
王朝网络
begin

  
王朝网络
ChannelHangUp();

  
王朝网络
Stop();

  
王朝网络
王朝网络
...{$IFNDEF ThreadChannel}

  
王朝网络
inherited Destroy();

  
王朝网络
王朝网络
...{$ENDIF}

  
王朝网络
InformTrunkStatus(lvofDelete);

  
王朝网络
FreeMem(aCallerId);

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.DialPhone(const DialPhoneNumber:PChar;

  
王朝网络
const PreDialNumber:PChar): boolean;

  
王朝网络
begin

  
王朝网络
Result := false;

  
王朝网络
if (channelState <> atsFree) then Exit;

  
王朝网络
phoneNumber := DialPhoneNumber;

  
王朝网络
Result := (SsmPickup(channelID) = 0);

  
王朝网络
if NOT Result then Exit;

  
王朝网络
Result := (SsmAutoDial(channelID,DialPhoneNumber)=0);

  
王朝网络
if Result then

  
王朝网络
begin

  
王朝网络
isDialOut := true;

  
王朝网络
channelState := atsCheckSendDial;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.DialPhone(

  
王朝网络
const DialPhoneNumber: PChar): boolean;

  
王朝网络
begin

  
王朝网络
Result := DialPhone(DialPhoneNumber,'');

  
王朝网络
end;

  
王朝网络


  
王朝网络
王朝网络
...{$IFDEF ThreadChannel}

  
王朝网络
procedure TCXXSHChannel8B.Execute;

  
王朝网络
begin

  
王朝网络
while NOT Terminated do

  
王朝网络
begin

  
王朝网络
Synchronize(ChannelProcessor);

  
王朝网络
Sleep(10);

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络
王朝网络
...{$ENDIF}

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.GetChannelID(): Word;

  
王朝网络
begin

  
王朝网络
Result := channelID;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.GetChannelStatus(): TTrunkState;

  
王朝网络
begin

  
王朝网络
Result := channelState;

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.InformTrunkStatus(const aMsgFlag: TLVOperateFlag);

  
王朝网络
begin

  
王朝网络
if NOT Assigned(OnChannelState) then Exit;

  
王朝网络
aTrunkState.lvFlag := aMsgFlag;

  
王朝网络
aTrunkState.TrunkID := IntToStr(channelID);

  
王朝网络
aTrunkState.TrunkType := Ord(channelType);

  
王朝网络
aTrunkState.TrunkTypeStr := ChannelTypeString[channelType];

  
王朝网络
aTrunkState.TrunkStep := Ord(channelState);

  
王朝网络
aTrunkState.TrunkStepStr := TrunkStateString[channelState];

  
王朝网络
aTrunkState.TrunkPhone := phoneNumber;

  
王朝网络
aTrunkState.TrunkData := dtmfString;

  
王朝网络
OnChannelState(aTrunkState);

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ProcessCallInSuccess();

  
王朝网络
begin

  
王朝网络


  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.SwitchOnCallIn(): boolean;

  
王朝网络
begin

  
王朝网络
SsmPickup(channelID); //摘機

  
王朝网络
ClearChannelBuffer();

  
王朝网络
channelState := atsCallInSuccess;

  
王朝网络
Result := true;

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ProcessDialSuccess();

  
王朝网络
begin

  
王朝网络


  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.CreateCommChannel(const aChennelID: Word);

  
王朝网络
var

  
王朝网络
ct:integer;

  
王朝网络
begin

  
王朝网络
channelID := aChennelID;

  
王朝网络
ct := SsmGetChType(channelID);

  
王朝网络
if (ct < 0) then Exit;

  
王朝网络
channelType := TChannelType(ct);

  
王朝网络
ClearTrunkStatus();

  
王朝网络
InformTrunkStatus(lvofAdd);

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.GetChannelType(): TChannelType;

  
王朝网络
begin

  
王朝网络
Result := channelType;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.GetDialOut(): boolean;

  
王朝网络
begin

  
王朝网络
Result := isDialOut;

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ProcessCheckDialSend();

  
王朝网络
begin

  
王朝网络
//三彙卡直接轉換狀態

  
王朝网络
channelState := atsDialing;

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.Startup();

  
王朝网络
begin

  
王朝网络
王朝网络
...{$IFDEF ThreadChannel}

  
王朝网络
Resume();

  
王朝网络
王朝网络
...{$ENDIF}

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.Stop();

  
王朝网络
begin

  
王朝网络
王朝网络
...{$IFDEF ThreadChannel}

  
王朝网络
Suspend();

  
王朝网络
Terminate();

  
王朝网络
王朝网络
...{$ENDIF}

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.CheckDialOutEnabled(): boolean;

  
王朝网络
begin

  
王朝网络
//內線通道、坐席通道、磁石通道和錄音通道不支持本SsmPicuup操作

  
王朝网络
Result := NOT((channelType = ct1) or

  
王朝网络
(channelType = ct2) or

  
王朝网络
(channelType = ct3) or

  
王朝网络
(channelType = ct10));

  
王朝网络
end;

  
王朝网络


  
王朝网络
class procedure TCXXSHChannel8B.InformInvodeError;

  
王朝网络
var

  
王朝网络
msgBuffer:PAnsiChar;

  
王朝网络
begin

  
王朝网络
GetMem(msgBuffer,255);

  
王朝网络
try

  
王朝网络
SsmGetLastErrMsg(msgBuffer);

  
王朝网络
//記錄異常日志,或者通知用戶

  
王朝网络
//Showmessage(msgBuffer);

  
王朝网络
finally

  
王朝网络
FreeMem(msgBuffer);

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
function TCXXSHChannel8B.GetTrunkStateBySsm(

  
王朝网络
const ssmState: integer): TTrunkState;

  
王朝网络
begin

  
王朝网络
Result := atsFree;

  
王朝网络
case ssmState of

  
王朝网络
0: Result := atsFree;

  
王朝网络
4,5,6,9: Result := atsCallIning;

  
王朝网络
7: Result := atsHangOff;

  
王朝网络
//8:“斷線”狀態。只有錄音通道才會進入本狀態。暫時不處理

  
王朝网络
//8: Result := atsHangOff;

  
王朝网络
//3: Result := atsCallInSuccess;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ProcessDialOut();

  
王朝网络
var

  
王朝网络
dState:integer;

  
王朝网络
begin

  
王朝网络
dState := SsmChkAutoDial(channelID);

  
王朝网络
case dState of

  
王朝网络
DIAL_VOICE,

  
王朝网络
DIAL_VOICEF1,

  
王朝网络
DIAL_VOICEF2:

  
王朝网络
begin

  
王朝网络
channelState := atsDialSuccess;

  
王朝网络
isConntectd := true;

  
王朝网络
end;

  
王朝网络
DIAL_STANDBY,

  
王朝网络
DIAL_NO_DIALTONE,

  
王朝网络
DIAL_ECHO_NOVOICE,

  
王朝网络
DIAL_NOVOICE,

  
王朝网络
DIAL_NOANSWER,

  
王朝网络
DIAL_FAILURE,

  
王朝网络
DIAL_INVALID_PHONUM:

  
王朝网络
begin

  
王朝网络
channelState := atsHangOff;

  
王朝网络
end;

  
王朝网络
end;

  
王朝网络
strMessage := '撥號中...';

  
王朝网络
end;

  
王朝网络


  
王朝网络
procedure TCXXSHChannel8B.ClearChannelBuffer();

  
王朝网络
begin

  
王朝网络
SsmClearRxDTMFBuf(channelID); //清空驅動程序內部的DTMF按鍵號碼接收緩沖區

  
王朝网络
SsmClearRxBuf(channelID); //清除指定通道ch上MODEM模塊的接收緩沖區中的所有數據

  
王朝网络
//“搶撥” 開關是指當在放音過程中收到對方的DTMF按鍵字符時,由驅動程序程序立即停止正在進行的放音操作。

  
王朝网络
//SsmSetDtmfStopPlay(channelID,true); //打開搶撥開關

  
王朝网络
end;

  
王朝网络


  
王朝网络
end.

  
王朝网络
 
 
 
上一篇《Delphi之東進模擬語音卡(D160A)可複用源碼》
下一篇《用DELPHI實現文件加密壓縮》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
Delphi之三彙模擬語音卡(SHT-8B/PCI/FAX)可複用源碼 作者:成曉旭 設計簡介: 1、 設計思路請參考本站Blog的另一篇文章:“Delphi之東進模擬語音卡(D160A)可複用源碼”;鏈接[url=http://blog.csdn.net/CXXSoft/archive/2006/08/23/1108211.aspx]http://blog.csdn.net/CXXSoft/archive/2006/08/23/1108211.aspx[/url]。 2、 其實,仔細對比,你會發現這兩種卡的代碼類方法簽名幾乎99%是一樣的,也就是說,這兩都之間,還需要更進一步的抽象,以解決“重複代碼”或者“相似代碼”的問題。 3、 更高層次的抽象,請參考我的設計文檔。 4、 類圖(以後補上): 5、 卡類源碼: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724739.png[/img]//------------------------------------------------------------------------------ [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724771.png[/img]// [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724802.png[/img]// 産品名稱: 成曉旭的個人軟件Delphi源碼庫 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724833.png[/img]// 産品版本: CXXSoft delphi code source lib 2.0 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724849.png[/img]// 模塊名稱: Delphi之三彙模擬語音卡類 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724911.png[/img]// 模塊描述: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724942.png[/img]// 單元文件: unSHCard8B.pas [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803724974.png[/img]// 開發作者: 成曉旭 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725005.png[/img]// 備注: 任何人使用此文件時,請保留此段自述文件,謝謝! [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725036.png[/img]// 開發時間: 2003-12-03 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725067.png[/img]// 修改曆史: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725099.png[/img]// 修改描述: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725130.png[/img]//------------------------------------------------------------------------------ [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725161.png[/img]unit unSHCard8B; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725192.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725271.png[/img]interface [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725317.png[/img]uses [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725349.png[/img] Windows, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725411.png[/img] //unDJTC08a32,unDJNewSig, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725442.png[/img] unBaseDefine, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725474.png[/img] //unDJ160ADefine,unDJChanne160A, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725521.png[/img] unShpa3api,unSHChanne18B,unSH8BDefine; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725552.png[/img]type [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725567.png[/img] TCXXCommCard8B = class(TObject) [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725599.png[/img] private [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725646.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725677.png[/img] ChannelNumber:Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725739.png[/img] channelObject:array of TCXXSHChannel8B; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725771.png[/img] OnCardChannelState:TTrunkStatusEvent; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725786.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725817.png[/img] procedure ReleaseCommDevice(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725864.png[/img] function GetChannelObjectOrder(const aChannelID:Word):Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725942.png[/img] function InitChannel():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725974.png[/img] public [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803725989.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726021.png[/img] constructor Create(const trunkEvent:TTrunkStatusEvent); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726083.png[/img] destructor Destroy(); override; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726114.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726192.png[/img] function LoadCommDevice(const loadAll:boolean=false):boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726208.png[/img] function Startup():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726239.png[/img] function GetAFreeChannel():Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726271.png[/img] function GetChannelNumber():Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726302.png[/img] function DialPhone(const aChannelID:Word;const DialPhoneNumber:PChar):boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726333.png[/img] function HangUp(const aChannelID:Word):boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726349.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726380.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726411.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726442.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726474.png[/img]implementation [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726489.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726521.png[/img]const [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726552.png[/img] SH_ConfigFile = 'C:ShCtiShConfig.ini'; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726583.png[/img] SH_IndexFile = 'C:ShCtiShIndex.ini'; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726599.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726630.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726661.png[/img]...{ TCXXCommCard8B } [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726708.png[/img]constructor TCXXCommCard8B.Create(const trunkEvent:TTrunkStatusEvent); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726739.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726771.png[/img] ChannelNumber := 0; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726802.png[/img] Self.OnCardChannelState := trunkEvent; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726896.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726958.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803726974.png[/img]destructor TCXXCommCard8B.Destroy; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803727005.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803727036.png[/img] Loop:Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803727067.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803727099.png[/img] if (Length(channelObject) > 0) and (channelNumber > 0) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803727130.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803727771.png[/img] for Loop := 0 to ChannelNumber - 1 do [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728067.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728099.png[/img] if Assigned(channelObject[Loop]) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728130.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728161.png[/img] channelObject[Loop].Free(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728177.png[/img] channelObject[Loop] := nil; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728271.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728286.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728427.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728458.png[/img] ReleaseCommDevice(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728474.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728505.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728536.png[/img]function TCXXCommCard8B.DialPhone(const aChannelID: Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728567.png[/img] const DialPhoneNumber: PChar): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728583.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728630.png[/img] K:Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728661.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728692.png[/img] Result := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728755.png[/img] K := GetChannelObjectOrder(aChannelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728771.png[/img] if (K <> ErrorTrunkNumber) and (Assigned(channelObject[K])) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728817.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728849.png[/img] Result := channelObject[K].DialPhone(DialPhoneNumber); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728880.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728927.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728958.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803728974.png[/img]procedure TCXXCommCard8B.ReleaseCommDevice(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729005.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729052.png[/img] SsmCloseCti() ; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729067.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729099.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729130.png[/img]function TCXXCommCard8B.GetAFreeChannel(): Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729161.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729177.png[/img] Loop:Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729224.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729255.png[/img] Result := ErrorTrunkNumber; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729302.png[/img] for Loop := Low(channelObject) to High(channelObject) do [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729317.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729349.png[/img] if NOT channelObject[Loop].CheckDialOutEnabled() then continue; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729380.png[/img] if (channelObject[Loop].GetChannelStatus() = atsFree) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729411.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729427.png[/img] Result := channelObject[Loop].GetChannelID(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729458.png[/img] break; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729489.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729536.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729567.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729583.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729614.png[/img]function TCXXCommCard8B.GetChannelNumber(): Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729646.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729677.png[/img] Result := channelNumber; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729708.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729724.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729755.png[/img]function TCXXCommCard8B.GetChannelObjectOrder( [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729786.png[/img] const aChannelID: Word): Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729817.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729849.png[/img] Loop:Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729864.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729896.png[/img] Result := ErrorTrunkNumber; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729927.png[/img] for Loop := Low(channelObject) to High(channelObject) do [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729958.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803729974.png[/img] if (channelObject[Loop].GetChannelID = aChannelID) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730036.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730083.png[/img] Result := Loop; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730114.png[/img] break; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730146.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730177.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730208.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730224.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730271.png[/img]function TCXXCommCard8B.HangUp(const aChannelID: Word): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730302.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730333.png[/img] K:Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730349.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730380.png[/img] Result := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730411.png[/img] K := GetChannelObjectOrder(aChannelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730442.png[/img] if (K <> ErrorTrunkNumber) and (Assigned(channelObject[K])) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730458.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730521.png[/img] channelObject[K].ChannelHangUp(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730552.png[/img] Result := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730567.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730599.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730630.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730661.png[/img]function TCXXCommCard8B.LoadCommDevice(const loadAll:boolean): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730677.png[/img]const [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730708.png[/img] loadEmpty = true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730755.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730786.png[/img] Result := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730817.png[/img] if SsmStartCti(SH_ConfigFile,SH_IndexFile) <> 0 then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730849.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730880.png[/img] TCXXSHChannel8B.InformInvodeError(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730911.png[/img] Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730942.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730974.png[/img] if(SsmGetMaxUsableBoard() <> SsmGetMaxCfgBoard()) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803730989.png[/img] begin //部分板卡初始化失敗,取出失敗原因 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731021.png[/img] TCXXSHChannel8B.InformInvodeError(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731052.png[/img] Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731083.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731099.png[/img] Result := InitChannel(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731146.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731177.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731192.png[/img]function TCXXCommCard8B.Startup(): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731224.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731255.png[/img] Loop:integer; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731286.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731333.png[/img] for Loop := 0 to channelNumber - 1 do [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731364.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731396.png[/img] channelObject[Loop].Startup(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731427.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731442.png[/img] Result := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731474.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731505.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731536.png[/img]function TCXXCommCard8B.InitChannel():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731567.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731599.png[/img] number,Loop:integer; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731630.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731661.png[/img] Result := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731677.png[/img] number := SsmGetMaxCh(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731708.png[/img] if (number < 0) then Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731771.png[/img] ChannelNumber := number; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731802.png[/img] SetLength(channelObject,channelNumber); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731849.png[/img] for Loop := 0 to channelNumber - 1 do [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731880.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731911.png[/img] channelObject[Loop] := TCXXSHChannel8B.Create(OnCardChannelState); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731942.png[/img] channelObject[Loop].CreateCommChannel(Loop); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731974.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803731989.png[/img] Result := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732021.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732052.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732083.png[/img]end. [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732130.png[/img] 6、 通道類源碼: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732146.png[/img]//------------------------------------------------------------------------------ [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732177.png[/img]// [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732208.png[/img]// 産品名稱: 成曉旭的個人軟件Delphi源碼庫 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732239.png[/img]// 産品版本: CXXSoft delphi code source lib 2.0 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732271.png[/img]// 模塊名稱: Delphi之三彙模擬語音卡通道類 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732286.png[/img]// 模塊描述: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732317.png[/img]// 單元文件: unSHChanne18B.pas [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732349.png[/img]// 開發作者: 成曉旭 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732396.png[/img]// 備注: 任何人使用此文件時,請保留此段自述文件,謝謝! [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732411.png[/img]// 開發時間: 2003-12-01 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732442.png[/img]// 修改曆史: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732474.png[/img]// 修改描述: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732536.png[/img]//------------------------------------------------------------------------------ [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732552.png[/img]unit unSHChanne18B; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732583.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732614.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732646.png[/img]...{$DEFINE ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732661.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732692.png[/img]interface [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732724.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732755.png[/img]uses [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732786.png[/img] Windows,Classes,SysUtils, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732802.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732833.png[/img] unBaseDefine,unShpa3api,unSH8BDefine, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732864.png[/img] //unDJ160ADefine, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732896.png[/img] unDJTC08a32,unDJNewSig; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732911.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732942.png[/img]Type [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803732974.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733005.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733036.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733052.png[/img] ...{$IFDEF ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733083.png[/img] TCXXSHChannel8B = class(TThread) [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733114.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733146.png[/img] ...{$ELSE} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733161.png[/img] TCXXSHChannel8B = class(TObject) [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733192.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733224.png[/img] ...{$ENDIF} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733255.png[/img] private [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733286.png[/img] channelType:TChannelType; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733302.png[/img] oldChannelState,channelState:TTrunkState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733333.png[/img] channelID:Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733364.png[/img] phoneNumber:string; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733396.png[/img] dtmfString:string; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733411.png[/img] aCallerId:PAnsiChar; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733442.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733474.png[/img] isConntectd:boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733505.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733536.png[/img] isDialOut:boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733552.png[/img] aTrunkState:TTrunkStatus; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733583.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733614.png[/img] procedure ChannelProcessor(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733646.png[/img] procedure InformTrunkStatus(const aMsgFlag: TLVOperateFlag); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733661.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733692.png[/img] procedure ClearTrunkStatus(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733724.png[/img] procedure ClearChannelBuffer(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733755.png[/img] function CheckSigHangup():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733786.png[/img] function CheckCallIn():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733802.png[/img] function SwitchOnCallIn():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733833.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733880.png[/img] procedure ProcessCallInSuccess(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733911.png[/img] procedure ProcessDialSuccess(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733942.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803733958.png[/img] procedure ProcessCheckDialSend(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734005.png[/img] procedure ProcessDialOut(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734021.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734052.png[/img] procedure Stop(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734083.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734130.png[/img] //三彙卡專用方法 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734146.png[/img] function GetTrunkStateBySsm(const ssmState: integer): TTrunkState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734177.png[/img] protected [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734208.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734255.png[/img] ...{$IFDEF ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734286.png[/img] procedure Execute(); override; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734302.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734333.png[/img] ...{$ENDIF} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734364.png[/img] public [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734396.png[/img] strMessage:string; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734411.png[/img] OnChannelState:TTrunkStatusEvent; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734442.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734474.png[/img] constructor Create(const trunkEvent:TTrunkStatusEvent); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734505.png[/img] destructor Destroy();override; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734521.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734552.png[/img] procedure CreateCommChannel(const aChennelID: Word); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734583.png[/img] procedure Startup(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734614.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734646.png[/img] function GetChannelID():Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734677.png[/img] function GetChannelStatus():TTrunkState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734724.png[/img] function GetChannelType():TChannelType; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734755.png[/img] function DialPhone(const DialPhoneNumber:PChar):boolean;overload; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734786.png[/img] function DialPhone(const DialPhoneNumber:PChar;const PreDialNumber:PChar):boolean;overload; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734802.png[/img] procedure ChannelHangUp(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734833.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734864.png[/img] function GetDialOut():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734896.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734911.png[/img] //三彙卡特性方法 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734942.png[/img] function CheckDialOutEnabled():boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803734974.png[/img] class procedure InformInvodeError(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735005.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735021.png[/img]implementation [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735052.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735083.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735114.png[/img]...{ TCXXSHChannel8B } [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735146.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735177.png[/img]procedure TCXXSHChannel8B.ChannelHangUp(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735192.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735224.png[/img] isDialOut := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735255.png[/img] SsmHangUp(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735286.png[/img] ClearChannelBuffer(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735317.png[/img] ClearTrunkStatus(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735349.png[/img] InformTrunkStatus(lvofUpdate); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735364.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735396.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735442.png[/img]procedure TCXXSHChannel8B.ChannelProcessor(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735474.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735505.png[/img] ssmState:integer; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735536.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735552.png[/img]// ssmState := SsmGetChState(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735583.png[/img]// channelState := GetTrunkStateBySsm(ssmState); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735614.png[/img] CheckCallIn(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735646.png[/img] case channelState of [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735661.png[/img] atsFree: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735692.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735724.png[/img] // [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735755.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735786.png[/img] atsCallIning: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735817.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735833.png[/img] SwitchOnCallIn(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735864.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735896.png[/img] atsCallInSuccess: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735942.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803735974.png[/img] if CheckSigHangup() then Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736005.png[/img] ProcessCallInSuccess(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736021.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736052.png[/img] atsCheckSendDial: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736083.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736114.png[/img] ProcessCheckDialSend(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736130.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736161.png[/img] atsDialing: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736192.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736224.png[/img] ProcessDialOut(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736255.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736286.png[/img] atsDialSuccess: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736317.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736349.png[/img] if CheckSigHangup() then Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736364.png[/img] ProcessDialSuccess(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736396.png[/img] strMessage := '撥號成功'; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736427.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736458.png[/img] atsHangOff: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736489.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736505.png[/img] ChannelHangUp(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736536.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736567.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736599.png[/img] if (oldChannelState <> channelState) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736630.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736661.png[/img] oldChannelState := channelState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736677.png[/img] InformTrunkStatus(lvofUpdate); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736708.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736739.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736771.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736802.png[/img]function TCXXSHChannel8B.CheckCallIn(): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736817.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736849.png[/img] Result := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736880.png[/img] if(SsmGetChState(channelID)=2) then //檢測到振鈴信號 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736911.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803736927.png[/img] SsmGetCallerId(channelID, aCallerId); //取出CALLERID信息 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737052.png[/img] channelState := atsCallIning; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737083.png[/img] Result := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737114.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737146.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737161.png[/img]...{ [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737192.png[/img] Result := RingDetect(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737224.png[/img] if Result then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737255.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737286.png[/img] OffHook(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737302.png[/img] if isDialOut then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737333.png[/img] channelState := atsDialSuccess [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737364.png[/img] else [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737396.png[/img] channelState := atsCallIning; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737411.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737442.png[/img]} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737474.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737505.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737536.png[/img]function TCXXSHChannel8B.CheckSigHangup(): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737552.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737583.png[/img] Result := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737614.png[/img] if (SsmGetChState(channelID) = S_CALL_PENDING) then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737646.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737677.png[/img] strMessage := '對方已挂機'; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737708.png[/img] InformTrunkStatus(lvofUpdate); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737739.png[/img] SsmStopPlay(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737771.png[/img] channelState := atsHangOff; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737786.png[/img] Result := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737817.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737849.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737880.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737896.png[/img]procedure TCXXSHChannel8B.ClearTrunkStatus(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737927.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737958.png[/img] channelState := atsFree; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803737989.png[/img] oldChannelState := channelState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738021.png[/img] phoneNumber := ''; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738052.png[/img] dtmfString := ''; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738083.png[/img] strMessage := ''; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738099.png[/img] isConntectd := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738130.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738161.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738192.png[/img]constructor TCXXSHChannel8B.Create(const trunkEvent:TTrunkStatusEvent); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738208.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738239.png[/img] GetMem(aCallerId,50); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738271.png[/img] Self.OnChannelState := trunkEvent; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738302.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738333.png[/img]...{$IFDEF ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738349.png[/img] Self.FreeOnTerminate := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738380.png[/img] inherited Create(true); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738411.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738442.png[/img]...{$ENDIF} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738474.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738489.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738521.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738552.png[/img]destructor TCXXSHChannel8B.Destroy; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738583.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738614.png[/img] ChannelHangUp(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738630.png[/img] Stop(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738661.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738692.png[/img]...{$IFNDEF ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738724.png[/img] inherited Destroy(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738755.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738771.png[/img]...{$ENDIF} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738817.png[/img] InformTrunkStatus(lvofDelete); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738833.png[/img] FreeMem(aCallerId); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738864.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738896.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738927.png[/img]function TCXXSHChannel8B.DialPhone(const DialPhoneNumber:PChar; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738958.png[/img] const PreDialNumber:PChar): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803738974.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739005.png[/img] Result := false; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739036.png[/img] if (channelState <> atsFree) then Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739067.png[/img] phoneNumber := DialPhoneNumber; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739099.png[/img] Result := (SsmPickup(channelID) = 0); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739114.png[/img] if NOT Result then Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739146.png[/img] Result := (SsmAutoDial(channelID,DialPhoneNumber)=0); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739177.png[/img] if Result then [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739208.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739239.png[/img] isDialOut := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739271.png[/img] channelState := atsCheckSendDial; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739286.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739317.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739349.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739380.png[/img]function TCXXSHChannel8B.DialPhone( [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739411.png[/img] const DialPhoneNumber: PChar): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739427.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739458.png[/img] Result := DialPhone(DialPhoneNumber,''); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739489.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739521.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739552.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739583.png[/img]...{$IFDEF ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739630.png[/img]procedure TCXXSHChannel8B.Execute; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739646.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739677.png[/img] while NOT Terminated do [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739708.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739739.png[/img] Synchronize(ChannelProcessor); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739755.png[/img] Sleep(10); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739786.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739817.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739849.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739880.png[/img]...{$ENDIF} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739896.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739927.png[/img]function TCXXSHChannel8B.GetChannelID(): Word; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739958.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803739989.png[/img] Result := channelID; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740021.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740036.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740083.png[/img]function TCXXSHChannel8B.GetChannelStatus(): TTrunkState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740114.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740146.png[/img] Result := channelState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740177.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740224.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740255.png[/img]procedure TCXXSHChannel8B.InformTrunkStatus(const aMsgFlag: TLVOperateFlag); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740286.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740317.png[/img] if NOT Assigned(OnChannelState) then Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740349.png[/img] aTrunkState.lvFlag := aMsgFlag; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740380.png[/img] aTrunkState.TrunkID := IntToStr(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740411.png[/img] aTrunkState.TrunkType := Ord(channelType); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740427.png[/img] aTrunkState.TrunkTypeStr := ChannelTypeString[channelType]; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740458.png[/img] aTrunkState.TrunkStep := Ord(channelState); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740489.png[/img] aTrunkState.TrunkStepStr := TrunkStateString[channelState]; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740521.png[/img] aTrunkState.TrunkPhone := phoneNumber; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740567.png[/img] aTrunkState.TrunkData := dtmfString; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740599.png[/img] OnChannelState(aTrunkState); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740630.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740646.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740677.png[/img]procedure TCXXSHChannel8B.ProcessCallInSuccess(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740739.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740771.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740802.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740864.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740880.png[/img]function TCXXSHChannel8B.SwitchOnCallIn(): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740911.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803740958.png[/img] SsmPickup(channelID); //摘機 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741005.png[/img] ClearChannelBuffer(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741036.png[/img] channelState := atsCallInSuccess; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741067.png[/img] Result := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741099.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741114.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741177.png[/img]procedure TCXXSHChannel8B.ProcessDialSuccess(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741208.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741239.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741255.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741286.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741317.png[/img]procedure TCXXSHChannel8B.CreateCommChannel(const aChennelID: Word); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741349.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741380.png[/img] ct:integer; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741411.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741442.png[/img] channelID := aChennelID; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741474.png[/img] ct := SsmGetChType(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741505.png[/img] if (ct < 0) then Exit; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741536.png[/img] channelType := TChannelType(ct); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741552.png[/img] ClearTrunkStatus(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741583.png[/img] InformTrunkStatus(lvofAdd); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741614.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741646.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741692.png[/img]function TCXXSHChannel8B.GetChannelType(): TChannelType; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741724.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741739.png[/img] Result := channelType; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741771.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741802.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741833.png[/img]function TCXXSHChannel8B.GetDialOut(): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741849.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741880.png[/img] Result := isDialOut; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741911.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741942.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741974.png[/img]procedure TCXXSHChannel8B.ProcessCheckDialSend(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803741989.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742021.png[/img] //三彙卡直接轉換狀態 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742052.png[/img] channelState := atsDialing; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742083.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742114.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742130.png[/img]procedure TCXXSHChannel8B.Startup(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742161.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742208.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742239.png[/img] ...{$IFDEF ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742255.png[/img] Resume(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742286.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742317.png[/img] ...{$ENDIF} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742349.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742364.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742396.png[/img]procedure TCXXSHChannel8B.Stop(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742427.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742458.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742489.png[/img] ...{$IFDEF ThreadChannel} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742505.png[/img] Suspend(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742536.png[/img] Terminate(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742567.png[/img][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742599.png[/img] ...{$ENDIF} [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742614.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742646.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742692.png[/img]function TCXXSHChannel8B.CheckDialOutEnabled(): boolean; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742724.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742739.png[/img] //內線通道、坐席通道、磁石通道和錄音通道不支持本SsmPicuup操作 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742771.png[/img] Result := NOT((channelType = ct1) or [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742833.png[/img] (channelType = ct2) or [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742849.png[/img] (channelType = ct3) or [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742880.png[/img] (channelType = ct10)); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742911.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742942.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742958.png[/img]class procedure TCXXSHChannel8B.InformInvodeError; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803742989.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743021.png[/img] msgBuffer:PAnsiChar; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743052.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743083.png[/img] GetMem(msgBuffer,255); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743114.png[/img] try [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743146.png[/img] SsmGetLastErrMsg(msgBuffer); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743161.png[/img] //記錄異常日志,或者通知用戶 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743192.png[/img] //Showmessage(msgBuffer); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743224.png[/img] finally [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743255.png[/img] FreeMem(msgBuffer); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743271.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743317.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743333.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743364.png[/img]function TCXXSHChannel8B.GetTrunkStateBySsm( [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743396.png[/img] const ssmState: integer): TTrunkState; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743427.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743442.png[/img] Result := atsFree; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743474.png[/img] case ssmState of [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743505.png[/img] 0: Result := atsFree; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743536.png[/img] 4,5,6,9: Result := atsCallIning; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743567.png[/img] 7: Result := atsHangOff; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743599.png[/img] //8:“斷線”狀態。只有錄音通道才會進入本狀態。暫時不處理 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743630.png[/img] //8: Result := atsHangOff; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743646.png[/img] //3: Result := atsCallInSuccess; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743677.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743708.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743739.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743771.png[/img]procedure TCXXSHChannel8B.ProcessDialOut(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743786.png[/img]var [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743817.png[/img] dState:integer; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743849.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743880.png[/img] dState := SsmChkAutoDial(channelID); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743896.png[/img] case dState of [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743927.png[/img] DIAL_VOICE, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803743958.png[/img] DIAL_VOICEF1, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744005.png[/img] DIAL_VOICEF2: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744021.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744052.png[/img] channelState := atsDialSuccess; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744083.png[/img] isConntectd := true; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744114.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744130.png[/img] DIAL_STANDBY, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744161.png[/img] DIAL_NO_DIALTONE, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744192.png[/img] DIAL_ECHO_NOVOICE, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744224.png[/img] DIAL_NOVOICE, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744255.png[/img] DIAL_NOANSWER, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744271.png[/img] DIAL_FAILURE, [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744302.png[/img] DIAL_INVALID_PHONUM: [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744333.png[/img] begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744364.png[/img] channelState := atsHangOff; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744380.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744458.png[/img] end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744474.png[/img] strMessage := '撥號中...'; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744505.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744536.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744567.png[/img]procedure TCXXSHChannel8B.ClearChannelBuffer(); [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744599.png[/img]begin [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744614.png[/img] SsmClearRxDTMFBuf(channelID); //清空驅動程序內部的DTMF按鍵號碼接收緩沖區 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744646.png[/img] SsmClearRxBuf(channelID); //清除指定通道ch上MODEM模塊的接收緩沖區中的所有數據 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744677.png[/img] //“搶撥” 開關是指當在放音過程中收到對方的DTMF按鍵字符時,由驅動程序程序立即停止正在進行的放音操作。 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744708.png[/img] //SsmSetDtmfStopPlay(channelID,true); //打開搶撥開關 [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744724.png[/img]end; [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744755.png[/img] [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744786.png[/img]end. [img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803744817.png[/img]
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
高清美女攝影(8)
高清美女攝影(7)
高清美女攝影(6)
高清美女攝影(5)
痞子的甘南日記
疑是銀河落九天
雪域壩上四——純美色
冬日戀歌——西城楊柳弄輕柔
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有