2017-08-04 41 views
0

編輯:我知道,一些研究之後,這個問題在電話表的主造成的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,例如modem1modem2,問題是 爲什麼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 

回答

0

經過對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專家,希望有人可以做出更好的結果,但爲了更好的結果我已經足夠用於臨時使用了。

相關問題