短信读取不通过SIM卡,如何实现

时间:2022-09-11 19:54:20
各位,我现在想在读收到的短信直接发到PC机上,不经过SIM卡,具体是怎么实现的

16 个解决方案

#1


跟联通或者移动商量拉一根专线,直接从网络传过来。

#2


不是这样,我好像在哪里看到过用AT指令就可以完成的

#3


信息内容是保存在sim卡上的,modem只有通过读区sim卡才能把信息读出来。除非你的计算机和联通或者移动的服务器连着。

#4


关注,我也记的在哪看过一条指令,不过我忘了

#5


但是如果短信息是存在手机上面的话,就不一样了。

至于AT指令:
AT+CMGR:读短信。信息从+CPMS命令设定的存储器读取。

#6


短信通常保存在SIM卡上,所以不经过SIM卡是不可能的。不过现在有些手机也支持把短信保存在手机上,这样你可以不经过SIM卡。但实际上这对你的应用有什么很大的区别吗?都要通过一定的接口把短信读出来。可能你的意思是在刚收到短信的时候就把它读出来,不要存到SIM卡上,不过我记得一般情况下底层协议栈是根据SIM卡的情况来决定是否收取下一条短信的,收到之后就保存在SIM上,然后通知上层应用。很久没看了,可能记错了。

#7


看过OldKitty(老猫) 的回复后,又看看楼主的问题,可能是这么个意思吧:
1.手机收到短信息
2.在处理的时候,不是存在手机/SIM卡中,而是通过某一种方式直接传输到PC端存储
3.在此过程中,不经过SIM卡存储再删除的过程

如果是这样的话,实现起来也不难吧,在正常处理的过程中,当启动存储短信息功能/发送特定的signal的时候,换成自己的处理就可以了,处理过程当然要经过检查串口、初始化连接、建立连接、传输信息、检查传输结果、返回的过程。

#8


当然,在PC端也要有相应的软件来接收短信息才可以成功返回。

#9


用命令AT+CNMI=...我也忘了具体是什么了,只知道这个at指令,你查一下用法,这个命令可以实现短信直接收发,而不通过sim卡。这样的话,短信息到来时,会收到+CMT:命令。

#10


AT COMMAND 你可以手机网站下载
    //  Try to connect to the Mobile Phone.
    //
    //  Command       : AT<CR>
    //
    //  Valid response: <CR><LF>OK<CR><LF>
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //
////////////////////////////////////////////////////////////////////////////
    //
    //  Request the manufacturer identification.
    //
    //  Command       : AT+CGMI<CR>
    //
    //  Valid response: <CR><LF>manufacturer<CR><LF>
    //                  <CR><LF>OK<CR><LF>
    //
    //                  manufacturer ... manufacturer identification
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //
///////////////////////////////////////////////////////////////////////////
    //
    //  Request the model identification.
    //
    //  Command       : AT+CGMM<CR>
    //
    //  Valid response: <CR><LF>model<CR><LF>
    //                  <CR><LF>OK<CR><LF> 
    //
    //                  model ... model identification
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //

///////////////////////////////////////////////////////////////////////////
    //
    //  Select the phonebook memory storage where phonebook commands operate.
    // 
    //  Command       : AT+CPBS=storage<CR>
    //
    //                  storage ... memory where phonebook commands operate
    //
    //                  "FD" ... SIM fixdialling-phonebook
    //                  "LD" ... SIM last-dialling-phonebook
    //                  "ME" ... ME phonebook
    //                  "MT" ... combined ME and SIM phonebook
    //                  "SM" ... SIM phonebook
    //                  "TA" ... TA phonebook    
    //
    //  Valid response: <CR><LF>OK<CR><LF> 
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //


///////////////////////////////////////////////////////////////////////////
    //
    //  Read the size of the selected phonebook memory.
    //
    //  Command       : AT+CPBR=?<CR>
    //
    //  Valid response: <CR><LF>+CPBR: (index-list),nlength,tlength<CR><LF>
    //                  <CR><LF>OK<CR><LF> 
    //
    //                  index ..... integer type values in the range of 
    //                              location numbers of phonebook memory
    //                  list ...... integer type value indicating the size of 
    //                              the selected phonebook memory
    //                  nlength ... integer type value indicating the maximum 
    //                              length of the number field
    //                  tlength ... integer type value indicating the maximum 
    //                              length of name field
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //

    ///////////////////////////////////////////////////////////////////////////
    //
    //  Read all phonebook entries.
    //
    //  Command       : AT+CPBR=index<CR>
    //
    //                  index ... integer type values in the range of 
    //                            location numbers of phonebook memory
    //
    //  Valid response: <CR><LF>+CPBR: index, "number", type, "name"<CR><LF>
    //                  <CR><LF>OK<CR><LF> 
    //
    //                  index .... integer type values in the range of 
    //                             location numbers of phonebook memory
    //                  number ... string type phone number of format type
    //                  type ..... type of address octet in integer format
    //                  name ..... the name of the phonebook entry
    //
    //  Response for 
    //  an empty entry: <CR><LF>OK<CR><LF>
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //

    ///////////////////////////////////////////////////////////////////////////
    //
    //  Close the IRDA port.
    // 

port.Close();
}

#11


请楼主发言,我们的理解对不对?是不是可以结贴了?

#12


XH001有EMAIL地址吗,我没有看明白你的意思

#13


用命令AT+CNMI不就可以了吗,我做过的,可以用的,但是这个命令忘了。只知道设置后如果有信息来到,收到的信息如下:
+CMT:……
省略号表示的是pdu信息或者Text信息(这取决于你用那种方式了,即at+cmgf),把这些信息分解一下就分离出来短消息内容了。

#14


可能楼主的意思只是在短消息到来的时候就能够知道,然后就可以读取并处理,那么用+CNMI确实就可以了,读一下0705吧

#15


楼主,还是在这儿聊吧,有xysome(胜) 和OldKitty(老猫) 等人的参与,理解会更好。如果,你很想给我联系的话,msn:xh0001cn@hotmail.com

#16


看短消息是CLASS0/1/2/3咯,然后看看你所采用的protocol stack是怎么样支持的,具体看看GSM 03.38,03.40,07.05,07.07,就差不多了。其实,读不读SIM CARD我觉得问题都不是很紧要吧。实现起来并不是很困难的。

#1


跟联通或者移动商量拉一根专线,直接从网络传过来。

#2


不是这样,我好像在哪里看到过用AT指令就可以完成的

#3


信息内容是保存在sim卡上的,modem只有通过读区sim卡才能把信息读出来。除非你的计算机和联通或者移动的服务器连着。

#4


关注,我也记的在哪看过一条指令,不过我忘了

#5


但是如果短信息是存在手机上面的话,就不一样了。

至于AT指令:
AT+CMGR:读短信。信息从+CPMS命令设定的存储器读取。

#6


短信通常保存在SIM卡上,所以不经过SIM卡是不可能的。不过现在有些手机也支持把短信保存在手机上,这样你可以不经过SIM卡。但实际上这对你的应用有什么很大的区别吗?都要通过一定的接口把短信读出来。可能你的意思是在刚收到短信的时候就把它读出来,不要存到SIM卡上,不过我记得一般情况下底层协议栈是根据SIM卡的情况来决定是否收取下一条短信的,收到之后就保存在SIM上,然后通知上层应用。很久没看了,可能记错了。

#7


看过OldKitty(老猫) 的回复后,又看看楼主的问题,可能是这么个意思吧:
1.手机收到短信息
2.在处理的时候,不是存在手机/SIM卡中,而是通过某一种方式直接传输到PC端存储
3.在此过程中,不经过SIM卡存储再删除的过程

如果是这样的话,实现起来也不难吧,在正常处理的过程中,当启动存储短信息功能/发送特定的signal的时候,换成自己的处理就可以了,处理过程当然要经过检查串口、初始化连接、建立连接、传输信息、检查传输结果、返回的过程。

#8


当然,在PC端也要有相应的软件来接收短信息才可以成功返回。

#9


用命令AT+CNMI=...我也忘了具体是什么了,只知道这个at指令,你查一下用法,这个命令可以实现短信直接收发,而不通过sim卡。这样的话,短信息到来时,会收到+CMT:命令。

#10


AT COMMAND 你可以手机网站下载
    //  Try to connect to the Mobile Phone.
    //
    //  Command       : AT<CR>
    //
    //  Valid response: <CR><LF>OK<CR><LF>
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //
////////////////////////////////////////////////////////////////////////////
    //
    //  Request the manufacturer identification.
    //
    //  Command       : AT+CGMI<CR>
    //
    //  Valid response: <CR><LF>manufacturer<CR><LF>
    //                  <CR><LF>OK<CR><LF>
    //
    //                  manufacturer ... manufacturer identification
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //
///////////////////////////////////////////////////////////////////////////
    //
    //  Request the model identification.
    //
    //  Command       : AT+CGMM<CR>
    //
    //  Valid response: <CR><LF>model<CR><LF>
    //                  <CR><LF>OK<CR><LF> 
    //
    //                  model ... model identification
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //

///////////////////////////////////////////////////////////////////////////
    //
    //  Select the phonebook memory storage where phonebook commands operate.
    // 
    //  Command       : AT+CPBS=storage<CR>
    //
    //                  storage ... memory where phonebook commands operate
    //
    //                  "FD" ... SIM fixdialling-phonebook
    //                  "LD" ... SIM last-dialling-phonebook
    //                  "ME" ... ME phonebook
    //                  "MT" ... combined ME and SIM phonebook
    //                  "SM" ... SIM phonebook
    //                  "TA" ... TA phonebook    
    //
    //  Valid response: <CR><LF>OK<CR><LF> 
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //


///////////////////////////////////////////////////////////////////////////
    //
    //  Read the size of the selected phonebook memory.
    //
    //  Command       : AT+CPBR=?<CR>
    //
    //  Valid response: <CR><LF>+CPBR: (index-list),nlength,tlength<CR><LF>
    //                  <CR><LF>OK<CR><LF> 
    //
    //                  index ..... integer type values in the range of 
    //                              location numbers of phonebook memory
    //                  list ...... integer type value indicating the size of 
    //                              the selected phonebook memory
    //                  nlength ... integer type value indicating the maximum 
    //                              length of the number field
    //                  tlength ... integer type value indicating the maximum 
    //                              length of name field
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //

    ///////////////////////////////////////////////////////////////////////////
    //
    //  Read all phonebook entries.
    //
    //  Command       : AT+CPBR=index<CR>
    //
    //                  index ... integer type values in the range of 
    //                            location numbers of phonebook memory
    //
    //  Valid response: <CR><LF>+CPBR: index, "number", type, "name"<CR><LF>
    //                  <CR><LF>OK<CR><LF> 
    //
    //                  index .... integer type values in the range of 
    //                             location numbers of phonebook memory
    //                  number ... string type phone number of format type
    //                  type ..... type of address octet in integer format
    //                  name ..... the name of the phonebook entry
    //
    //  Response for 
    //  an empty entry: <CR><LF>OK<CR><LF>
    //
    //  Error response: <CR><LF>ERROR<CR><LF>
    //
    //  <CR> ... Carriage return
    //  <LF> ... Line feed
    //

    ///////////////////////////////////////////////////////////////////////////
    //
    //  Close the IRDA port.
    // 

port.Close();
}

#11


请楼主发言,我们的理解对不对?是不是可以结贴了?

#12


XH001有EMAIL地址吗,我没有看明白你的意思

#13


用命令AT+CNMI不就可以了吗,我做过的,可以用的,但是这个命令忘了。只知道设置后如果有信息来到,收到的信息如下:
+CMT:……
省略号表示的是pdu信息或者Text信息(这取决于你用那种方式了,即at+cmgf),把这些信息分解一下就分离出来短消息内容了。

#14


可能楼主的意思只是在短消息到来的时候就能够知道,然后就可以读取并处理,那么用+CNMI确实就可以了,读一下0705吧

#15


楼主,还是在这儿聊吧,有xysome(胜) 和OldKitty(老猫) 等人的参与,理解会更好。如果,你很想给我联系的话,msn:xh0001cn@hotmail.com

#16


看短消息是CLASS0/1/2/3咯,然后看看你所采用的protocol stack是怎么样支持的,具体看看GSM 03.38,03.40,07.05,07.07,就差不多了。其实,读不读SIM CARD我觉得问题都不是很紧要吧。实现起来并不是很困难的。