gammu电话表有多个调制解调器端口

时间:2017-08-04 06:57:06

标签: sms gammu

  编辑:我知道,经过一番研究,这个问题是由IMEI领域引起的   在电话表中作为主要,如果我们使用调制解调器池像wavecome一样   16端口,gammu只检测一个IMEI

我有1个调制解调器连接16个SIM卡端口,每个配置连接到我服务器上的同一个数据库,发送和接收短信所有工作就像一个魅力,每个端口都有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,如modem1modem2,问题是 为什么gammu数据库中的手机表不断用最后的gammu-smsd服务替换数据?

例如: 如果我运行第一个配置,那么手机表将包含所有信息,如信号,IMEI从第一个端口,但当我从第一个端口运行第二个gammu-smsd数据将消失,从第二个端口配置更改

这是来自modem1 / etc / gammu-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 / gammu-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

1 个答案:

答案 0 :(得分:0)

在对gammu的API Doc进行一些阅读之后,我已经弄明白了,是的,就像第一个,它因为我使用一个调制解调器和16端口的SIM卡,gammu只是检测singel IMEI甚至调制解调器有16个端口,快速回答我的问题是没有可配置的文件可以处理这个问题,所以我们必须修改# Supply lists by splicing them into dots: coalesce_by_column <- function(df) { return(dplyr::coalesce(!!! as.list(df))) } df %>% group_by(A) %>% summarise_all(coalesce_by_column) #> # A tibble: 2 x 5 #> A B C D E #> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 1 2 3 2 5 #> 2 2 4 5 3 4

中的一些行og代码
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;
}

并像往常一样重新编译gammu,并修改手机表以将ID设置为主键,我不是c的专家,希望有人可以做出更好的改变以获得更好的结果,但对我来说这对于临时使用是足够的。 / p>