求SPCOMM控件对程控交换机的控制 (199分)

  • 主题发起人 主题发起人 风铃夜思雨
  • 开始时间 开始时间

风铃夜思雨

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在写一个酒店管理软件的同时须要做个对酒店内的电话分机进行监控,如打出的电话号码,通话时间,并把所有进行记录到相应房间的数据库内,然后客人退房后好做个费用结算,亦都可以说是一个电话收费系统。

可怜的我不会写啊,寻求一个好的解决方案?
我初来报到,我只能给199分了,留一分给自已啦。
少啊,再送QQ一个,够了没有。还不够啊,到我论坛里还有更多QQ送,http://www.de-guan.com/bbs
 
我也想知道。但我不会,只能帮你顶啦@@@@
 
其实,你只要设定好SPCOMM的属性,判断一下交换机的数据格式,(也就是找到话单的分割符),你可以用超级终端读出来,再判断是不是优惠时段(可能现行的记费标准没有节假日了),做一些计算,插入数据库就可以了呀!
BTW:我也是做酒店的!!呵呵~多交流!!
 
本人有个模块,交换,QQ4441076
 
唉……
没人会呀?!!·……
 
1.你应该有该交换机的通讯协议;
2.你应该知道该交换机的通讯模式:通讯速率、校验位、起始位、停止位、数据位等
3.用SPCOMM或COMPORT等控件与交换机建立联接,按通讯协议从交换机获取数据;
4........
 
这个我知道了呀,主要原因是大概怎么写嘛
 
通过COM口与交换机联接上后
1.通常接协议进行握手。
2.按协议向交换机发命令取数据
3.按协议分解交换机送来的信息
4.将有用的数据保存到数据库.

可能的话,将交换机的通讯协议贴上了,帮你看看。
 
下面这些是接收的部分内容


//不知有何用
function ttelrecf.isrun:boolean;
function ttelrecf.getfirstbill(startl:integer;fchar:pchar):integer;
begin
result:=-1;
if startl>=recbuflength then exit;//当开始查找字段大于总长度时则退出
while startl<recbuflength do
begin
if recbuf[startl]=fchar then begin result:=startl;exit;end;
inc(startl);
end;
end;
function ttelrecf.showinfo(startl:integer):integer;
var
// s:string;
i:integer;
begin
setlength(s,54);
for i:=1 to 54 do
begin
s:=recbuf[startl+i-1];
end;
mem_telinfo.lines.append(s);
end;
procedure ttelrecf.getcallinfor(rfirst:integer;startdt:tdatetime);
var
h,m,s:integer;
systime,startdate,starttime:tdatetime;
costlen:integer;
begin
systime:=now;
h:=strtoint(substr(rfirst-1,2));
m:=strtoint(substr(rfirst+2,2));
starttime:=encodetime(h,m,0,0);
startdate:=trunc(now);
systime:=systime-startdate;//得出delphi默认日期的日期+时间的格式
if systime>starttime then starttime:=starttime+startdate-1
else starttime:=starttime+startdate;
startdt:=starttime;
showmessage('通话开始时间为:'+datetimetostr(startdt));
//得出通话长度长第六位开始即可
h:=strtoint(substr(rfirst+4,2));
m:=strtoint(substr(rfirst+8,2));
s:=strtoint(substr(rfirst+11,2));
showmessage('钟是'+inttostr(h)+'分是'+inttostr(m)+'秒是'+inttostr(s));
costlen:=h*3600+m*60+s;
//下面计算出通话时间长,单位为秒
// h:=strtoint(substr(rfirst+))
end;
{$R *.DFM}
//function getfirs
procedure Ttelrecf.FormShow(Sender: TObject);
begin
if isrun then
begin
application.messagebox('电话接收器端口设置错误'+#13+#10+'或有另一程序正在使用程控机','系统信息',mb_ok+mb_iconinformation);
abort;
telrecf.caption:=telrecf.caption+'-出错';
spt_stop.visible:=false;
spt_play.visible:=true;
end;

end;

procedure Ttelrecf.spt_playClick(Sender: TObject);
begin
comm1.startcomm;
telrecf.caption:=telrecf.caption;
spt_play.visible:=false;
spt_stop.visible:=true;
end;

procedure Ttelrecf.spt_stopClick(Sender: TObject);
begin
comm1.StopComm;
telrecf.caption:=telrecf.caption;
spt_stop.visible:=false;
spt_play.visible:=true;
end;

procedure Ttelrecf.btn_clearClick(Sender: TObject);
begin
mem_telinfo.clear;
end;
 
联系我吧,一起研究,我也在做这方面的东西
zzprogram@21cn.com
 
也联系我,
temp@de-guan.com
 
接受答案了.
 
后退
顶部