找回密码  加入

AUTOIT CN

搜索
查看: 18187|回复: 46

[网络通信] [网管呼叫] 如何添加播放语音上去,知道的朋友帮忙一下。[已解决]

[复制链接]
发表于 2012-5-29 16:49:35 | 显示全部楼层 |阅读模式
本帖最后由 yingf20 于 2012-6-3 13:20 编辑

服务端:

  1. #include <GUIConstantsEx.au3>
  2. #include <ListViewConstants.au3>
  3. #include <StaticConstants.au3>
  4. #include <WindowsConstants.au3>
  5. $Form1 = GUICreate("语音", 460, 444)
  6. $ListView1 = GUICtrlCreateListView("计算机|号数信息|播放时间|IP地址", 0, 0, 458, 414)
  7. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100);调整宽度
  8. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100);调整宽度
  9. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100);调整宽度
  10. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 100);调整宽度
  11. GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES);设置表格边框
  12. GUICtrlSetCursor(-1, 0);鼠标指针
  13. GUISetState(@SW_SHOW)
  14. TCPStartup(); 开始 TCP 服务
  15. $ip = IniRead(@ScriptDir & '\wglm.ini', 'Config', 'ServerIP', '192.168.0.7');从配置文件中读取IP
  16. $port = IniRead(@ScriptDir & '\wglm.ini', 'Config', 'ServerPort', '21991');从配置文件中读取端口
  17. $tcpMainListen = TCPListen($ip, $port, 100);创建监听,用于接收数据
  18. If $tcpMainListen = -1 Then
  19. MsgBox(4096, '错误', '创建监听失败!')
  20. Exit
  21. EndIf
  22. While 1
  23. $nMsg = GUIGetMsg()
  24. Switch $nMsg
  25.   Case $GUI_EVENT_CLOSE
  26.    Exit
  27. EndSwitch
  28. $tcpSocket = TCPAccept($tcpMainListen);接收客户端连接
  29. If $tcpSocket <> -1 Then;客户端连接成功
  30.   While 1
  31.    $TcpRecvData = TCPRecv($tcpSocket, 2048, 1);接收客户端发送的数据
  32.    If @error Then ExitLoop ;如果接收信息出现错误,则退出循环.
  33.    If $TcpRecvData <> '' Then
  34.     $TcpRecvData = GUICtrlCreateListViewItem(BinaryToString($TcpRecvData, 4), $ListView1);将信息写入到$listview1控件
  35.     ExitLoop
  36.    EndIf
  37.   WEnd
  38. EndIf
  39. WEnd
复制代码
客户端:

  1. #include <ButtonConstants.au3>
  2. #include <GUIConstantsEx.au3>
  3. #include <StaticConstants.au3>
  4. #include <WindowsConstants.au3>
  5. $Form2 = GUICreate("语音呼叫", 273, 249)
  6. $Button1 = GUICtrlCreateButton("呼叫网管", 16, 24, 243, 41)
  7. $Button2 = GUICtrlCreateButton("呼叫技术员", 16, 88, 241, 41)
  8. $Button3 = GUICtrlCreateButton("呼叫服务员", 16, 152, 243, 41)
  9. GUISetState(@SW_SHOW)
  10. TCPStartup(); 开始 TCP 服务; 开始 TCP 服务
  11. $ip = IniRead(@ScriptDir & '\wglm.ini', 'Config', 'ServerIP', @IPAddress1);从配置文件中读取IP
  12. $port = IniRead(@ScriptDir & '\wglm.ini', 'Config', 'ServerPort', '21991');从配置文件中读取端口
  13. While 1
  14. $nMsg = GUIGetMsg()
  15. Switch $nMsg
  16.   Case $GUI_EVENT_CLOSE
  17.    Exit
  18.   Case $Button1;呼叫网管
  19.    _Callinfo('001')
  20.   Case $Button2;呼叫技术员
  21.    _Callinfo('002')
  22.   Case $Button3;呼叫服务员
  23.    _Callinfo('003')
  24. EndSwitch
  25. WEnd
  26. ;呼叫信息
  27. Func _Callinfo($CallInfo)
  28. $tcpMainSocket = TCPConnect($ip, $port);连接服务端
  29. If $tcpMainSocket = -1 Then
  30.   MsgBox(64, '错误', '连接到服务端失败!',2)
  31. Else
  32.   TCPSend($tcpMainSocket, StringToBinary(@ComputerName & '|' & $CallInfo & '|' & @HOUR & ":" & @MIN & ":" & @SEC & "|" & @IPAddress1, 4))
  33. EndIf
  34. EndFunc   ;==>_Callinfo
复制代码
WGLM.INI

[Config]
ServerIP=127.0.0.1
Serverport=21991


我想利用客户端发送的001或002、003到服务端激活播放语音,知道怎写的朋友帮忙一下。。在此谢谢。



这个问题已经解决,想知道如何解决的朋友回复可见。
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
发表于 2012-5-29 17:10:06 | 显示全部楼层
没看明白...SORRY
发表于 2012-5-29 17:37:43 | 显示全部楼层
  1. SoundPlay(@WindowsDir & "\media\ding.wav")
复制代码
根据目录你指定源声音
发表于 2012-5-29 17:55:21 | 显示全部楼层
_Callinfo('002', true)
_Callinfo($CallInfo, $Is_play_sound)

客戶端傳送 True 或 False
服務端接收後再決定使否要 SoundPlay
 楼主| 发表于 2012-5-29 20:13:37 | 显示全部楼层
回复 3# ooxxgod


    我加了如上代码上去,声音有了,可就是客户端发送过来的001、002、003怎根据来激活播放相关的语音呢?
 楼主| 发表于 2012-5-29 20:15:16 | 显示全部楼层
回复 4# rchockxm


    能否说详细点。_Callinfo($CallInfo, $Is_play_sound)怎用?在此谢谢。
发表于 2012-5-30 06:44:06 | 显示全部楼层
你皮肤倒是挺好看的,拿出来分享下。

_Callinfo是自定义函数。。。。你要自己定义功能!
发表于 2012-5-30 08:05:42 | 显示全部楼层
求皮肤哦 ~
发表于 2012-5-30 09:09:00 | 显示全部楼层
多写成这样了,怎么会还不知道怎么放声音呢
加个判断,服务端收到001放什么,002放什么
 楼主| 发表于 2012-5-30 19:22:40 | 显示全部楼层
回复 10# seniors


    不知道判断怎写呢。知道的朋友帮忙一下。
 楼主| 发表于 2012-5-30 19:24:08 | 显示全部楼层
回复 8# scum


    皮肤,是windows 主题来的,不是软件的皮肤。如果真是要的话,我可以打包给需要的朋友下载的。
发表于 2012-5-30 23:07:01 | 显示全部楼层
WGLM的兄弟?
发表于 2012-5-31 09:42:06 | 显示全部楼层
回复 14# lpxx
哎呀,兄弟好啊。WGLM。哈哈 ~ 低调。。。
 楼主| 发表于 2012-6-1 11:50:56 | 显示全部楼层
晕。没人帮忙解决一下吗??大家知道怎样的,不要藏私好么?发表一下。
发表于 2012-6-2 09:07:39 | 显示全部楼层
本帖最后由 lanfengc 于 2012-6-2 09:09 编辑

回复 16# yingf20


我做了个这样的UDF 你试试。 语音引擎下载地址:http://115.com/file/antmr5p7
[au3]
Func SpeakText($_Num = '')
        Local $loopTimes = 0
        If $_Num = '' Then Return
        $obj = ObjCreate("SAPI.SpVoice")
        If @error Then Exit MsgBox(16, "错误", "语音库创建失败!")
        For $T In $obj.GetVoices ;遍历所有的引擎
                $strVoice = $T.GetDescription ;获取语音引擎的名字
                If StringCompare($strVoice, "ScanSoft Mei-Ling_Full_22kHz") = 0 Then ;如果是女声引擎的名字
                        $obj.voice = $obj.GetVoices().Item($loopTimes) ;则使用这个引擎的ID
                        ExitLoop ;不在查找了
                EndIf
                $loopTimes += 1 ;如果不是女声引擎的名字,则ID号加1
        Next

        If StringCompare($obj.GetVoices().Item($loopTimes).GetDescription, "ScanSoft Mei-Ling_Full_22kHz") <> 0 Then  ;如果当前使用的语音引擎名称不是女声的,则提示错误
                MsgBox(16, "错误", "你没有安装女声语音库!")
                SetError(1)
        Else
                $obj.rate = -4   ;速度 -10 到 10  越小越慢
                $obj.volume = 100   ;音量 百分比, 100代表100%,最大
                $obj.Speak($_Num)   ;朗读传送过来的字符
                $obj.WaitUntilDone(-1)  ;等待直到朗读结束 为假
                $obj.rate = -1  ;速度为-1
                $obj.Speak("号机器非法使用")  ;朗读 中文
                $obj.WaitUntilDone(-1) ;等待直到朗读结束 为假
                Sleep(200)  ;等待200毫秒, 一句话说完了,等一会,要不然一句接一句的
                $obj.Speak("请网管去查看")  ;朗读中文
                $obj.WaitUntilDone(-1)  ;等待直到朗读结束 为假
                $obj = 0  ;销毁OBJECT对象
        EndIf

EndFunc   ;==>SpeakText

SpeakText("005")
[/au3]
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备15028933号-3 )谷歌 百度

GMT+8, 2018-12-13 20:46 , Processed in 0.115073 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表