jsmsengine收发短信有问题 请指教

使用JSMSEngine出现:
Exception in thread "main" java.lang.NoClassDefFoundError: gnu/io/SerialPortEventListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.jsmsengine.CService.(CService.java:147)
at abc.SendMessage.main(SendMessage.java:44)
Caused by: java.lang.ClassNotFoundException: gnu.io.SerialPortEventListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 14 more

请问是什么问题

2个回答

本人 追加 。。电脑系统win7旗舰版

为什么网上的JSMSEngine的使用方法 介绍中 。CService类的构造器需要传2个参数 ,但是我下载之后发现他自带的例子中 的 CService是需要传入4个参数的。这我就纳闷了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
jsmsengine收发短信,第一次发送成功,第二次失败。

这是发送代码,第一次可以成功,第二次显示链接失败,下面是控制台的打印信息,以及发送代码 public class MsgService { private static CService cs = new CService("com3", 9600); private static int num = 1; public static void init(String port, Integer fm) { // 指定端口号和频率 cs = new CService(port, fm); } /** * 发送短信 * * @param phone * 手机号 * @param info * 短信内容 */ public static void sendmsg(String phone, String info) { try { System.out.println("正在发送短信"); System.out.println("初始化服务。。。。"); // 初始化连接 cs.initialize(); // 设置jSMSEngine服务的缓存 System.out.println("设置缓存。。。。"); cs.setCacheDir(".\\"); // 连接 int status = 0; if (num==1) { status = cs.connect(); }else{ status = 0; } System.out.println("连接"+status); System.out.println("对比值"+CService.ERR_OK); // 连接成功(可以是GSM Modem、带有红外线、蓝牙、数据线的手机) if (status == CService.ERR_OK) { cs.setOperationMode(CService.MODE_PDU); cs.setSmscNumber(""); COutgoingMessage msg = new COutgoingMessage(phone, info); msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_UNICODE); if (cs.sendMessage(msg) == CService.ERR_OK) { System.out.println("给" + phone + "发送短信成功!"); //num++; } else { System.out.println("给" + phone + "发送短信失败!"); } // 断开连接 cs.disconnect(); System.out.println("断开连接"); } else { System.out.println("连接设备失败, 异常: " + status); } } catch (Exception e) { e.printStackTrace(); } } }

单片机怎么控制果云ga6收发短信并液晶显示?

AT怎么发送,是通过电脑控制单片机发送吗,还是编程控制,求大神指教!!!液晶显示要些什么程序,本人新手,求大神指教

关于短信平台即时收发的问题!

现在在做短信平台遇到了一个问题,有一个socket通道,两个线程,一个控制收,一个控制发。收短信的一直在收,发短信的是检索数据库中的信息,有就发,没有就不发,定时检索的!但只有一个连接。如果让收短信的线程停下一段时间的话,就有可能造成收不到部分短信。怎么办,发愁中!!!!

Java怎样实现短信发送与接收呢?

最近需要在程序里实现短信发送与接收,应该怎样实现呢?求大神指教啊~

VS2013C#短信及email发送终端

公司研发一款新的机器。希望在上面添加收发短信及email 的功能模块,以实现异地的通信。 主要目的是了解机器在现场的工作状况,所以功能集中在机器终端的发送信息及 email,希望是使用C#进行开发。 在淘宝上也看到了不少的产品,不知道哪些好?希望了解的朋友可以推荐下。另外我看到的产品主要针对短信收发的问题,并没有看到可以收发email 的模块,希望了解的朋友可以推荐下,不胜感激

目前在用java做电信移动联通的短信收发接口,有做过的人请教!!!!!!!!!急

BOSS 让我两周之内完成 头都大了,看了三个运营商的协议,看懂了一部分,现在的结果就是 单个号码发送 都可以了,就是不知道怎么接收短信,怎么获取每个用户短信送达状态。 发送我是这么做的: CMPP: 先连接网关,往socket里面写登陆报文输入,读取网关返回的登陆响应报文,登陆成功,提交submit报文,获取submit响应报文,然后短信就收到了。 SMGP:类似 SGIP:类似 疑问:1) 怎么接收短信? 2) 怎么群发? 3) 怎么获取每个用户的送达状态(群发短信每个号码到底收到没有) 有人说获取deliver报文,有人说要建个服务端等待网关的连接和解析网关传过来的报文。 这个协议里面的Deliver 是个什么概念 ?就想submit 我知道是封装报文然后提交到网关,这个Deliver到底是个什么东西?该怎么用? 我看协议里面还有CMPP_QUERY (移动) ,Query(电信),Report(联通) 这些又是干什么用的?貌似有点查询送达状态的报文,不是很了解,等待解答 因为发送的号码还比较多,所以还要兼顾速度,发送的短信,要获取送达状态,手机端还要回复,所以要获取回复的短信 请教啊,急~~~~~~~~~~~~~~~~~~~

STM32 之SIM800C 数据收发不正常?

在IAP升级中遇到的问题:单片机已经通过SIM800C建立了TCP连接,单片机主动发送的心跳包服务器能收到,服务器的回复单片机也可以收到;但是之后服务器会在给单片机发送一个提示单片机做好准备的报文AA,这时单片机也是可以收到,之后单片机回复服务器的报文就BB发送不出去,随之服务器也不会回复报文CC。但是服务器再次发送AA报文单片机可以收到,但仍然发不了BB报文。通过网络调试助手测试和服务器的通信及报文收发全部正常,不知道问题出在了哪里?跪求大神指点

光纤收发器网口灯不亮

光纤收发器只连接网线时,收发器个交换机网口都亮,rxtx口连上后,收发器和交换机网口都熄了,偶尔收发器和交换机网口会亮一下又熄灭

gnuradio软件usrp设备的同时收发问题

用的是gnuradio3.7.7.1软件自带的UHD:USRP Sink和UHD:USRP Source模块,设备是N210,实验收发一个简单的450MHz载频的正弦信号,实验过程中收、发程序能够单独工作,但不能同时工作,求解决办法

android 如何接收短信

if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); SmsMessage[] mges = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) { mges[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); } for (SmsMessage mge : mges) { sb.append("短信来自:" + mge.getDisplayOriginatingAddress() + "\n"); sb.append("短信内容:" + mge.getMessageBody()); } Toast.makeText(arg0, sb.toString(), Toast.LENGTH_LONG).show(); } &nbsp; 想识别号码是不是123456,如果是,阻止传播 如果不是就让广播通行,就当我没拦截过,怎么改,谢谢 //abortBroadcast();

nRF905双向收发问题,收发模式转换

情况是这样的:板子A和板子B,A发送数据给B,B能正常接收,但B按键触发发送命令给A,A接收的数据始终为0,求大神 指导,毕设问题,急急急!新手,没有币币,见谅!

linux下libcurl异步收发问题

最近在使用libcurl异步收发消息时碰到一个问题,实在没头绪,有哪位大大可以帮忙看看,多谢 一、目标:使用multi interface实现消息异步收发,两个线程,一个线程发消息,另一个线程收消息 二、问题: 1、环回收发无问题,但是发送到其它IP有问题,抓包能建立TCP连接,但是马上会断开,没有发出数据 2、程序会发生段错误具体信息如下 ``` (gdb) bt #0 0x0000003d0e432222 in curl_multi_fdset (multi_handle=0x604120, read_fd_set=0x7ffff7fd4d00, write_fd_set=0x0, exc_fd_set=<value optimized out>, max_fd=0x7ffff7fd4bfc) at multi.c:874 #1 0x0000000000400d08 in curl_multi_select (curl_m=0x604120) at curl_send.c:30 #2 0x0000000000400fb3 in curl_multi_recv () at curl_send.c:110 #3 0x0000003cf84079d1 in start_thread () from /lib64/libpthread.so.0 #4 0x0000003cf80e88fd in clone () from /lib64/libc.so.6 (gdb) f 0 #0 0x0000003d0e432222 in curl_multi_fdset (multi_handle=0x604120, read_fd_set=0x7ffff7fd4d00, write_fd_set=0x0, exc_fd_set=<value optimized out>, max_fd=0x7ffff7fd4bfc) at multi.c:874 874 in multi.c (gdb) f 1 #1 0x0000000000400d08 in curl_multi_select (curl_m=0x604120) at curl_send.c:30 30 curl_multi_fdset(curl_m, &fd_read, NULL, NULL, &max_fd); (gdb) ``` 三、代码 ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> #include <curl/curl.h> CURLM *g_curl_m = NULL; int curl_multi_select(CURLM *curl_m) { int ret = 0; struct timeval timeout_tv; fd_set fd_read; fd_set fd_write; fd_set fd_except; int max_fd = -1; if (NULL == curl_m) { return -1; } FD_ZERO(&fd_read); FD_ZERO(&fd_write); FD_ZERO(&fd_except); timeout_tv.tv_sec = 1; timeout_tv.tv_usec = 0; curl_multi_fdset(curl_m, &fd_read, NULL, NULL, &max_fd); if (-1 == max_fd) { return -1; } int select_ret = select(max_fd + 1, &fd_read, NULL, NULL, &timeout_tv); if (-1 == select_ret) { ret = -1; } else { ret = 0; } return ret; } size_t save_response(void *buffer, size_t size, size_t nmemb, void *userp) { static int recv_times = 0; recv_times++; printf("recv response:\n%d\n", recv_times); printf("%s\n", buffer); return size * nmemb; } void curl_multi_send() { int send_times = 0; int running_handle_count = 0; char auth[32] = {0}; while(1) { CURL *easy_handle = NULL; struct curl_slist *http_header = NULL; send_times++; memset(auth, 0, sizeof(auth)); easy_handle = curl_easy_init(); snprintf(auth, sizeof(auth), "Authorization:%d", send_times); http_header = curl_slist_append(http_header, auth); http_header = curl_slist_append(http_header, "User-Agent: freecwmp"); http_header = curl_slist_append(http_header, "Content-Type: text/xml"); http_header = curl_slist_append(http_header, "Expect:"); curl_easy_setopt(easy_handle, CURLOPT_URL, "http://guest:guest@10.55.0.156:9000/"); curl_easy_setopt(easy_handle, CURLOPT_HTTPHEADER, http_header); curl_easy_setopt(easy_handle, CURLOPT_POSTFIELDS, ""); curl_easy_setopt(easy_handle, CURLOPT_WRITEFUNCTION, save_response); curl_multi_add_handle(g_curl_m, easy_handle); while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(g_curl_m, &running_handle_count)) { } printf("Success send http msg.\n"); usleep(10000000); } return; } void curl_multi_recv() { int msgs_left = 0; int running_handles = 0; CURLM *curl_m = NULL; CURLMsg *msg = NULL; curl_m = g_curl_m; while(1) { if (0 == curl_multi_select(curl_m)) { msgs_left = 0; running_handles = 0; while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(curl_m, &running_handles)) { } while ((msg = curl_multi_info_read(curl_m, &msgs_left))) { if (CURLMSG_DONE == msg->msg) { curl_multi_remove_handle(curl_m, msg->easy_handle); } } } usleep(100000); } return; } int main(int argc, char *argv[]) { curl_global_init(CURL_GLOBAL_ALL); g_curl_m = curl_multi_init(); pthread_t send_pid = {0}; pthread_t receive_pid = {0}; //pthread_attr_t attr = {0}; //pthread_attr_init(&attr); //pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_create(&receive_pid, NULL, (void *) curl_multi_recv, NULL); pthread_create(&send_pid, NULL, (void *) curl_multi_send, NULL); //pthread_attr_destroy(&attr); pthread_join(send_pid, NULL); pthread_join(receive_pid, NULL); curl_global_cleanup(); return 0; } ```

Linux postfix 收发邮件问题

每次收发邮件报如下错误: Sep 28 13:54:56 mail postfix/master[2278]: warning: process /usr/libexec/postfix/pipe??? pid 5438 exit status 1 Sep 28 13:54:56 mail postfix/master[2278]: warning: /usr/libexec/postfix/pipe???: bad command startup -- throttling Sep 28 13:55:56 mail master[5447]: fatal: master_spawn: exec /usr/libexec/postfix/pipe???: No such file or directory Sep 28 13:55:57 mail postfix/master[2278]: warning: process /usr/libexec/postfix/pipe??? pid 5447 exit status 1 Sep 28 13:55:57 mail postfix/master[2278]: warning: /usr/libexec/postfix/pipe???: bad command startup -- throttling Sep 28 13:56:57 mail master[5453]: fatal: master_spawn: exec /usr/libexec/postfix/pipe???: No such file or directory Sep 28 13:56:58 mail postfix/master[2278]: warning: process /usr/libexec/postfix/pipe??? pid 5453 exit status 1 Sep 28 13:56:58 mail postfix/master[2278]: warning: /usr/libexec/postfix/pipe???: bad command startup -- throttling 我正常用控制台输入命令收发邮件是没问题的,但是用outlook收发邮件,验证无法通过,总是让我输入密码,上述的错误,我看了一下文件,根本没有什么pipe???这个文件,outlook不验证也无法收发mail,这个问题困扰小弟2天了,有大神帮忙解决一下吗,不胜感激~~!!

php cmpp2.0 移动短信的发送思路,请教大神?

情况是这样的,最近公司跟移动办了一个短信接口,由于我们是本地第一家办这种业务的,所有移动也提供不上任何的技术支持:给我发了一下基本的参数,如下,![图片说明](https://img-ask.csdn.net/upload/201501/15/1421286554_703176.png)以及服务代码什么的,然后叫我自己百度。。。。。。。。 由于我从来没有接触过这方面的,所以有几个问题想问: 1.是否是使用php的webservice发送XML到移动给的IP上? 2.发送的服务端,是否可以用php实现,还是要用C或C++写成可执行文件 3.我们只需要发送,不用接受客户端的返回数据,是否需要建数据库?

局域网组播同时收发的问题

我现在做的一个项目时局域网有多台设备,其中指定8台设备都能获取一个数据的同时在发给其他7台设备,然后取8个数值的平均值。所以我准备采取组播的方法。 我现在感觉有两个方法,一个是采取服务器-客户端的形式。以其中一个为服务器其他7个上报给它然后服务器在组播给其他设备。 另一种是将这8台设备都注册广播地址,然后设备获取数值后分发给其他7个设备。同时加一个接收广播地址的回调。但这个没有尝试过,不知道可行性怎么样。 希望网友们不吝赐教^_^(没C币了,不能悬赏了-_-) 还有一个问题,如果我将子网掩码配置后,一台设备用广播的形式上报数据,局域网所有的设备都能收到还是局域网内和这台设备相同网段的设备才能收到?

有关线程收发串口数据的问题

最近写一个项目里面用到的是基于串口通信的。 由于我需要一直处于接收数据状态,并且可以随时发送数据(我的串口是RS232,支持全双工),于是想到了用两个线程去做。 一个处于收状态,一个发包用。 现在的问题是:我只有一个SerialPort对象 ,通过跨类的信号和槽得到这个对象,但是一放在线程的run函数读写就会报错。 我曾想过把串口的设置和连接放在线程类里面做,但是我这边两个线程呢,一个链接的话,端口就会被占用,另外一个线程就没法连接 困了一天了 不知道该怎么办 我还想过把收发都放在一个线程里做 不知道这样可不可以 效率怎么样

socket通信收发错位的问题

本人正在写一个带有简单文件和文件夹传输功能的小程序,文件的传输一切正常,但是在传文件夹的时候,有一定几率会有某个文件的收发出现错位的现象,导致传输错误,代码大致如下:(缓冲区中的值我直接用含义代替了,实际前后还有很多代码,数据我是放到char数组中的) 服务端:(s为socket,buff为缓冲区) ``` 发送文件夹(路径) { 查找文件的循环,使用CFileFind,这里直接从找到某个文件开始,每个文件都会进入到下面的代码 if(path为目录) { send(s,0xffffffffffffffffLL,8,0); recv(s,buff,1024,0);//这个接收只为同步,不传数据。 send(s,(char *)文件夹名称,strlen(文件夹名称)+1,0); recv(s,buff,1024,0);//这个接收只为同步,不传数据。 发送文件夹(下一个路径)//递归调用 } else { send(s,文件长度,8,0); recv(s,buff,1024,0);//这个接收只为同步,不传数据。 send(s,(char *)文件名称,strlen(文件名称)+1,0); recv(s,buff,1024,0);//这个接收只为同步,不传数据。 块=文件长度/4194304;//按4M大小分块 文件长度=文件长度%4194304; for(i=0;i<块;i++) { 读文件(内容,4194304); send(s,内容,4194304,0); recv(s,buff,1024,0);//这个接收只为同步,不传数据。 } if(文件长度>0) { 读文件(内容,文件长度); } send(s,内容,文件长度+1,0); recv(s,buff,1024,0);//这个接收只为同步,不传数据。 } 文件查找结束后: send(s,0xffffffffeeeeeeeeLL,8,0); } ``` 客户端: ``` while(1) { recv(s,buff,1024,0); if(*((long long *)buff)==0xffffffffeeeeeeeeLL) { 结束 } else if(*((long long *)buff)==0xffffffffffffffffLL) { send(s,无用数据,4,0);//同步用 recv(s,buff,1024,0); 创建目录(buff); send(s,无用数据,4,0);//同步用 } else { 文件长度=buff; send(s,无用数据,4,0);//同步用 recv(s,buff,1024,0); 创建文件(buff); 块=文件长度/4194304; 文件长度=文件长度%4194304; send(s,无用数据,4,0);//同步用 for(i=0;i<块;i++) { recv(s,内容,4194304,0); 写文件(内容); send(s,无用数据,4,0);//同步用 } recv(s,内容,文件长度+1,0); if(文件长度>0) { 写文件(内容); } send(s,无用数据,4,0);//同步用 } } ``` 以上就是大致的代码,文件的打开、关闭等操作均有。 在传输文件夹的时候,有时候会报错,调试跟进去发现是收发错开了一位,客户端把服务器发送的文件名当成了文件长度,把文件内容当成了文件名……然后创建文件失败,写入时报错。我觉得奇怪的就是为什么会错开一个收发对?我把文件夹的收发对做成3个同样会出现这样的问题。传同样的文件夹,有时候能全部传完,有时候就只能传一半,而且出错的文件是随机的,不是固定的某个文件,导致调试异常困难,根本无法定位问题出现前的那个点……请问各位大神,此问题如何解决?

stm32 串口收发数据异常,然后发现是时钟有问题,求解答

在板子上搞个串口通信,发现串口助手发过去的和收到的不是同一个数据,比如发01, 到芯片一接收就变成了40,网上查了好久,可能是时钟问题,然后用RCC_GetClocksFreq函数一看,发现 初始化都是0啊 ![图片说明](https://img-ask.csdn.net/upload/202004/13/1586769585_878703.jpg) 调试的时候获取RCC_CLOCK的时候还会卡死。。所以是什么问题

nRF24L01 2.4G收发问题

第一次用这个芯片,博主用的是中断的方式读取状态以及接收数据,发现发送端每次读出来的值是0x1F,说明发送到达了最大发送次数而没有被接收?发送是OK的吗?然而接收端怎么也没有数据打印出来,接收不到任何数据,不知道问题出现在哪里,读写寄存器函数是OK的,求大神指点一下。 ``` #ifdef nRF24l01_EN #define NRF24L01_TX 0 //发送使能 1:发送 0:接收 #define MOSI_PORT JL_PORTB #define MOSI_BIT BIT(1) #define MISO_PORT JL_PORTB #define MISO_BIT BIT(0) #define SCK_PORT JL_PORTB #define SCK_BIT BIT(6) #define CSN_PORT JL_PORTB #define CSN_BIT BIT(3) #define CE_PORT JL_PORTB #define CE_BIT BIT(5) #define MOSI_SET(x) do{x?(MOSI_PORT->OUT|=MOSI_BIT):(MOSI_PORT->OUT&=~MOSI_BIT);}while(0) #define CSN_SET(x) do{x?(CSN_PORT->OUT|=CSN_BIT):(CSN_PORT->OUT&=~CSN_BIT);}while(0) #define CE_SET(x) do{x?(CE_PORT->OUT|=CE_BIT):(CE_PORT->OUT&=~CE_BIT);}while(0) #define SCK_SET(x) do{x?(SCK_PORT->OUT|=SCK_BIT):(SCK_PORT->OUT&=~SCK_BIT);}while(0) #define MISO_DAT() (MISO_PORT->IN&MISO_BIT) uint8_t const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址 uint8_t const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址 void spi_io_init(void) { MOSI_PORT->DIR &= ~MOSI_BIT; MISO_PORT->DIR |= MISO_BIT; CE_PORT->DIR &= ~CE_BIT; CE_PORT->OUT &= ~CE_BIT; CSN_PORT->DIR &= ~CSN_BIT; CSN_PORT->OUT |= CSN_BIT; SCK_PORT->DIR &= ~SCK_BIT; SCK_PORT->OUT &= ~SCK_BIT; } void inerDelay_us(unsigned char n) { for(;n>0;n--) asm("nop"); } uint8_t SPI_RW(uint8_t uchar) { uint8_t bit_ctr; for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit { MOSI_SET(uchar & 0x80); // output 'uchar', MSB to MOSI uchar = (uchar << 1); // shift next bit into MSB.. SCK_SET(1); // Set SCK high.. uchar |= MISO_DAT(); // capture current MISO bit SCK_SET(0); // ..then set SCK low again } return(uchar); // return read uchar } uint8_t SPI_Read(uint8_t reg) { uint8_t reg_val; CSN_SET(0); // CSN low, initialize SPI communication... SPI_RW(reg); // Select register to read from.. reg_val = SPI_RW(0); // ..then read registervalue CSN_SET(1); // CSN high, terminate SPI communication return(reg_val); // return register value } uint8_t SPI_RW_Reg(uint8_t reg, uint8_t value) { uint8_t status; CSN_SET(0); // CSN low, init SPI transaction status = SPI_RW(reg); // select register SPI_RW(value); // ..and write value to it.. CSN_SET(1); // CSN high again return(status); // return nRF24L01 status uchar } uint8_t SPI_Read_Buf(uint8_t reg, uint8_t *pBuf, uint8_t uchars) { uint8_t status,uchar_ctr; CSN_SET(0); // Set CSN low, init SPI tranaction status = SPI_RW(reg); // Select register to write to and read status uchar for(uchar_ctr=0;uchar_ctr<uchars;uchar_ctr++) pBuf[uchar_ctr] = SPI_RW(0); // CSN_SET(1); return(status); // return nRF24L01 status uchar } uint8_t SPI_Write_Buf(uint8_t reg, uint8_t *pBuf, uint8_t uchars) { uint8_t status,uchar_ctr; CSN_SET(0); //SPI使能 status = SPI_RW(reg); for(uchar_ctr=0; uchar_ctr<uchars; uchar_ctr++) // SPI_RW(*pBuf++); CSN_SET(1); //关闭SPI return(status); // } void SetRX_Mode(void) { SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, (uint8_t *)RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC ,主接收 } /* */ void nRF24L01_RxPacket(unsigned char* rx_buf) { unsigned char revale=0; uint8_t sta=SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况 CE_SET(1); // printf("R:%x ",sta); if(sta & BIT(6)) // 判断是否接收到数据 { CE_SET(0); printf("R"); SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer } SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 } void nRF24L01_TxPacket(unsigned char * tx_buf) { //printf("s"); CE_SET(0); //StandBy I模式 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, (uint8_t *)RX_ADDRESS, RX_ADR_WIDTH); // 装载接收端地址 SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送 CE_SET(1); //置高CE,激发数据发送 } void nrf24l01_irq_init(void); void NRF24L01_RX_Mode(void) { } /****************************************************************************** * \par Description: * \param[in] NULL * \param[out] NULL * \return NULL * \ note: *******************************************************************************/ void init_NRF24L01(void) { spi_io_init(); nrf24l01_irq_init(); CE_SET(0); SPI_Write_Buf(WRITE_REG + TX_ADDR, (uint8_t *)TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, (uint8_t *)RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 频道0自动 ACK应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21 SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 设置重发次数 SPI_RW_Reg(WRITE_REG + RF_CH, 40); // 设置信道工作为2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为2MHZ,发射功率为最大值0dB #if (NRF24L01_TX == 0) SetRX_Mode(); #endif } const u8 send_data[32]={0x55,0x5a,0xa5,0xaa}; u8 rx_buf[32]; void nrf24l01_msg_handler(void) { #if (NRF24L01_TX == 0) //nRF24L01_RxPacket(rx_buf); #endif } /****************************************************************************** * \par Description: 1秒消息处理 * \param[in] NULL * \param[out] NULL * \return NULL * \ note: *******************************************************************************/ void one_second_handler(void) { #if (NRF24L01_TX) nRF24L01_TxPacket((u8 *)send_data); #endif } u8 nrf24l01_rx_buf[32]; /****************************************************************************** * \par Description: 外部中断服务 * \param[in] NULL * \param[out] NULL * \return NULL * \ note: *******************************************************************************/ void nrf24l01_isr(void) { /* CE_SET(0); uint8_t sta = SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况 printf("%x ",sta); SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 if (sta & 0x10){ CE_SET(1); // chip enable SPI_RW_Reg(WRITE_REG+FLUSH_TX,0xff); }*/ nRF24L01_RxPacket(nrf24l01_rx_buf); JL_WAKEUP->CON2 |= BIT(12);//clean pending } IRQ_REGISTER(IRQ_PORT_IDX, nrf24l01_isr); /****************************************************************************** * \par Description: 外部中断初始化 * \param[in] NULL * \param[out] NULL * \return NULL * \ note: 下降沿触发 *******************************************************************************/ void nrf24l01_irq_init(void) { JL_PORTB->DIR |=BIT(4); JL_PORTB->DIE |= BIT(4); JL_PORTB->PU |=BIT(4); JL_PORTB->PD &=~BIT(4); printf("*****nrf24l01_irq_init init***\n"); JL_WAKEUP->CON0 |= BIT(12);//检查PA8电平触发 JL_WAKEUP->CON1 |= BIT(12);//下降沿触发 IRQ_REQUEST(IRQ_PORT_IDX, nrf24l01_isr); } #endif ```

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。 JVM内存结构 JVM构成 说到JVM内存结构,就不会只是说内存结构的5个分区,而是会延展到整个JVM相关的问题,所以先了解下

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

立即提问
相关内容推荐