师生对讲工具对接文档

2022/10/18 对接文档 共 3037 字,约 9 分钟

师生对讲教师端

启动项参数

分为指定个人启动 和 从选择界面启动两种模式,输入的参数不同

1.从选人界面启动:

注:座位信息格式为:

{SEATID:1}{SEATNAME:A1}{ONLINE:1}{rect:457,246,50,50}{IP:192.168.110.180}{NAME:}{STUID:}{gender:}{PIC:}{TOOLSTATE:}

没有的信息可以不用,比如没有NAME就直接不要{NAME:},SEATID、ONLINE、rect必须有且SEATID要唯一。其中rect为选人界面的基准,如果没有rect可能会导致选人界面错误。目前未对空rect的情况做相应处理,如果有需要的话后续的更新会加上。

教师的座位信息与学生座位信息的格式相同,但教师的座位信息中SEATID为0

法1:进入选人界面,选择需要参加会议的成员,输入的参数argc分别为12 个 和 13 个

1.int tcp_port 教师端师生对讲tcp端口

2.char* server_ip 视频服务器ip

3.int server_port 视频服务器端口

4.char* teacher_info 教师的座位信息字符串

5.char* student_json 所有学生座位信息的字符串

6.char* class_name 班级名称,如果没有则传0

7.int hwnd 主窗体句柄,用于窗口消息

8.int class_index 教室房间号,没有则传0

9.int lbd_student_hwnd 传入学生座位句柄号(此句柄号仅用于设置对讲的初始位置,如果没有,则直接输入主窗体句柄即可)

10.int screen_state 屏幕广播启动状态(当教师端启动屏幕广播时,学生端的师生对讲应该被隐藏,同时教师端不再传输数据给学生端)

11.char* title_name 进入会议内的抬头名称,默认为师生对讲

法2:从学生座位中选中人进入师生对讲,直接进入1对1的对讲

选中指定对象进行对讲,不选择需要参加会议的成员

1.int tcp_port

2.char* server_ip 视频服务器ip

3.int server_port 视频服务器端口

4.char* teacher_info 教师的信息字符串,如果没有座位则留0即可

5.int selected_student 被选中同学的座位号

6.char* students_json所有学生信息的字符串

7.char* class_name 班级名称,如果没有则传0

8.int hwnd 主窗体句柄

9.int class_index 教室房间号

10.lbd_student_hwnd(此句柄号仅用于设置对讲的初始位置,如果没有,则直接输入主窗体句柄即可)

11.int screen_state 屏幕广播启动状态(当教师端启动屏幕广播时,学生端的师生对讲应该被隐藏,同时教师端不再传输数据给学生端)

12.char* title_name 进入会议内的抬头名称,默认为师生对讲

同上,这里不做举例了。

与框架交互的窗体消息:

1.师生对讲发送消息:

本工具使用的所有消息都是SendCopydate,所有消息通过 const ULONG_PTR tINTERCOM = WM_USER + 5936; 发送

1.启动选人界面时:

会发送

Intercom|StartSelect|师生对讲窗口句柄

通过此消息获得师生对讲工具的窗口句柄

2.正式进入会议:

包括从选人界面进入师生对讲,以及从学生座位上直接选择进入会议,师生对讲工具会发送

Intercom|StartVideoMeeting|师生对讲窗口句柄

通过此消息可以获得师生对讲工具的窗口句柄

3.用户进入会议:

包括从选人界面进入时选中的用户,以及在邀请处选中用户进入会议,会发送当前所有在会议内的用户名单,学生端中途插入会议时,师生对讲工具会发送。

Intercom|NewActived|本次加入的用户座位号,以;分隔

比如

Intercom|NewActived|15;1;2;3;4;5

4.用户退出会议

学生自己退出会议、被学生座位处反选退出某位学生的师生对讲,都会发送这条消息

Intercom|QuitActived|退出学生座位号

每次加入的用户应该有且仅有一位用户,每次似乎会发送两次这个消息,尚未修复。

//程序退出不发消息码,请用进程类监控

2.师生对讲接收消息

1.关闭师生对讲

师生对讲接收到如下消息时,会退出进程。

PF_Frame|QuitIntercom

2.添加用户

师生对讲接收到如下消息,且会议内学生用户小于八名时,会向会议内添加一名用户

PF_Frame|NewCommer|座位号

如果当前会议内用户已经有八名用户 或 当前添加用户已在会议内 或当前会议用户不在总的学生列表内,该指令无效

3.踢出用户

师生对讲接到如下消息时,且会议内学生用户大于0名,会将会议内指定用户踢出会议。

PF_Frame|NewQuit|座位号

如果当前会议内没有用户 或 当前提出用户不在会议内 或当前用户不在总的学生列表内,该指令无效

4.更新学生信息

师生对讲接到如下消息时,会更新学生用户的信息:

PF_Frame|NewSeatValue|学生座位信息

可以是单个用户的信息,也可以是多个用户的座位信息通过|组合

此条消息不论是已经存在学生列表的用户、尚不在学生列表内和正在会议内的用户都可以使用,会更新该用户的头像、名称、座位信息,同时会将新的用户的发送给其他学生端。

5.更新教师信息

师生对讲接到如下消息时,

PF_Frame|NewTeacherInfo|教师座位信息

同上,但教师信息只能有一条,不赘述。

师生对讲学生端

师生对讲学生端启动参数:

//argc = 3

1.int tcp_ip 师生对讲教师端ip

2.int tcp_port 师生对讲

3.int main_hwnd 主框架句柄

4.char* title_name 进入会议内的抬头名称,默认为师生对讲  ## 师生对讲学生端窗体消息

所有发送消息通过PostMessage发送,消息码通过const ULONG_PTR sINTERCOM = WM_USER + 5938。

接收消息通过

const qint32 msg_framechange = WM_USER + 5936;

1. 师生对讲学生端发送窗体消息

1.发送师生对讲的窗体句柄

通过PostMessage发送,所有消息码通过const ULONG_PTR sINTERCOM = WM_USER + 5938;

//启动时向学生端发送当前的窗体句柄
::PostMessage((HWND)mainHWND, sINTERCOM, 0, this->winId());

2.师生对讲学生端接收窗体消息

1.接收消息是否窗口隐形

通过const qint32 msg_framechange = WM_USER + 5936;

lParam == 1时,窗体出现

lParam == 0时,窗体隐形

附加的依赖:

LBD_VideoMeeting.lib

LBD_VideoMeeting.dll

Qt5Widgets.dll

Qt5Network.dll

Qt5Gui.dll

Qt5Core.dll

//platforms文件夹下

qwindows.dll

//imageformats文件夹下

qgif.dll

qico.dll

qjpeg.dll

附录1:

下面教师端和学生端的生成文件夹相同,如下。

dmp文件和日志文件被保存到当前目录下的Log(Intercom)下,当前不会有debug输出日志。

头像图片会被缓存到当前目录下的Intercom_TempImages下。

文档信息

Search

    Table of Contents