代码之家  ›  专栏  ›  技术社区  ›  Khairu Aqsara

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

  •  0
  • Khairu Aqsara  · 技术社区  · 8 年前

    16端口,gammu只检测一个IMEI

    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
    

    每个端口都有自己的音素ID,如 modem1 modem2 为什么gammu数据库中的电话表不断用上次运行的gammu smsd服务替换数据?

    前任: 如果我运行第一个配置,那么电话表将包含所有信息,如信号,来自第一个端口的IMEI,但当我运行第二个gammu smsd时,来自第一个端口的数据将消失,从第二个端口配置更改

    [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
    

    [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 回复  |  直到 8 年前
        1
  •  -1
  •   Khairu Aqsara    8 年前

    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;
    }
    

    最终代码是

    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;
    }
    

    像往常一样重新编译gammu,修改phones表,将ID设置为主键,我不擅长c,希望有人能做出很好的改变,以获得更好的结果,但对我来说,这就足够使用temp了。