监务手机与多个调制解调器端口表
问题描述:
编辑:我知道,一些研究之后,这个问题在电话表的主造成的IMEI场 ,如果我们使用调制解调器池一样wavecome与 16口,监务检测只是一个IMEI监务手机与多个调制解调器端口表
我有1个调制解调器与SIM卡的16端口的连接,连接到同一个数据库我的服务器上的每个配置,发送和接收SMS所有的工作就像一个魅力,每个端口有SMSD服务,如
gammu-smsd -c /etc/gammu-smsdrc-modem1 --pid /var/run/gammu-smsdrc-modem1 --daemon
gammu-smsd -c /etc/gammu-smsdrc-modem2 --pid /var/run/gammu-smsdrc-modem2 --daemon
每个端口都有自己的PhoneID,例如modem1
和modem2
,问题是 为什么gammu数据库中的电话表会继续使用最后的gammu-smsd服务运行来替换数据?
例如: 如果我跑第一配置,然后电话表将包含所有信息,如信号,IMEI从1端口,但是当我运行第二监务,SMSD数据从第1端口将消失,从第2个端口的配置变化
这里是modem1的/ etc /监务-smsdrc-modem1我smsdrc配置
[gammu]
port = /dev/ttyUSB0
model =
connection = at115200
synchronizetime = yes
logfile = /var/log/gammu-smsdrc-modem1
logformat = nothing
use_locking =
gammuloc =
[smsd]
service=sql
logfile=/var/log/gammu-smsdrc-modem1
debuglevel=0
Driver=native_mysql
User=root
Password=root
PC=localhost
Database=test
PhoneID=modem1
这里是MODEM2的/ etc /监务-smsdrc-MODEM2我SMSD配置
[gammu]
port = /dev/ttyUSB1
model =
connection = at115200
synchronizetime = yes
logfile = /var/log/gammu-smsdrc-modem2
logformat = nothing
use_locking =
gammuloc =
[smsd]
service=sql
logfile=/var/log/gammu-smsdrc-modem2
debuglevel=0
Driver=native_mysql
User=root
Password=root
PC=localhost
Database=test
PhoneID=modem2
答
经过对gammu的API Doc的一些阅读后,我弄明白了,就像第一个一样,它是因为我用一个带有16端口sim卡的调制解调器,gammu只是检测singel IMEI甚至调制解调器有16端口,快速回答我的问题是没有configureable文件可以处理这个问题,所以我们必须从smsd/services/sql.c
if (SMSDSQL_option(Config, SQL_QUERY_DELETE_PHONE, "delete_phone",
"DELETE FROM phones WHERE ", ESCAPE_FIELD("IMEI"), " = %I", NULL) != ERR_NONE) {
return ERR_UNKNOWN;
}
.......
.......
.......
if (SMSDSQL_option(Config, SQL_QUERY_UPDATE_RECEIVED, "update_received",
"UPDATE phones SET ",
ESCAPE_FIELD("Received"), " = ", ESCAPE_FIELD("Received"), " + 1"
" WHERE ", ESCAPE_FIELD("IMEI"), " = %I", NULL) != ERR_NONE) {
return ERR_UNKNOWN;
}
修改一些线OG代码的最终代码会
if (SMSDSQL_option(Config, SQL_QUERY_DELETE_PHONE, "delete_phone",
"DELETE FROM phones WHERE ", ESCAPE_FIELD("ID"), " = %P", NULL) != ERR_NONE) {
return ERR_UNKNOWN;
}
.......
.......
.......
if (SMSDSQL_option(Config, SQL_QUERY_UPDATE_RECEIVED, "update_received",
"UPDATE phones SET ",
ESCAPE_FIELD("Received"), " = ", ESCAPE_FIELD("Received"), " + 1"
" WHERE ", ESCAPE_FIELD("ID"), " = %P", NULL) != ERR_NONE) {
return ERR_UNKNOWN;
}
,并重新编译监务像往常一样,和修改手机表设置ID为主键,我不是在C专家,希望有人可以做出更好的结果,但为了更好的结果我已经足够用于临时使用了。