ajax 回调失效函数有几率失效,为什么

后使用快捷导航没有帐号?
查看: 4427|回复: 5
基于回调函数的lwip
在线时间2 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
今天无操作系统基于回调函数的lwip遇到个问题,常量字符串tcp_write+tcp_output能发出去,但是变量字符型数组或指针就没法发送出去,似乎被阻塞了,不知道大家有没有遇到过这个情况
在线时间2254 小时
威望10070分
芯币2129枚
E金币350枚
TA的帖子TA的资源
好像不能发变量,而是打包成一数据包,这个包么应是UCHAR型的
在线时间2 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
回复 沙发 ddllxxrr 的帖子
char RecivePcBuf[30];
char Filename[30];
char temp_data[30];
unsigned short usBytesR
char g_cTmpBuf[30];
//int flag_C
char SendPc[100];
& &unsigned char FROK;
//File_Name[0]='\0';
temp_data[0]=0;
RecivePcBuf[0]=0;
g_cTmpBuf[0]=0;
strcpy(RecivePcBuf,p);
//RecivePcBuf=p;
RecivePcBuf[len]='\0';
if ((RecivePcBuf[0]=='l')&&(RecivePcBuf[1]=='s'))
//FROK=tcp_write(pcb,&su&,strlen(&su&),0);
SendPc[0]=0;
fresult = f_opendir(&g_sDirObject, g_cCwdBuf);
& &// Check for error and return if there is a problem.
& &if(fresult != FR_OK)
UARTprintf(&openirfail!&);
& && & return(fresult);
& && & // Read an entry from the directory.
& && & fresult = f_readdir(&g_sDirObject, &g_sFileInfo);
& && & // Check for error and return if there is a problem.
& && & if(fresult != FR_OK)
UARTprintf(&readdirfail!&);
& && && &&&return(fresult);
& && & // If the file name is blank, then this is the end of the
& && & // listing.
& && & if(!g_sFileInfo.fname[0])
UARTprintf(&blankname!&);
& && && &&&
& && & // If the attribue is directory, then increment the directory count.
& && & if(g_sFileInfo.fattrib & AM_DIR)
strcat(SendPc,&D----& &&);
if (g_sFileInfo.fattrib & AM_ARC)
strcat(SendPc,&----A& &&);
strcat(SendPc,g_sFileInfo.fname);
strcat(SendPc,&\0&);
strcat(SendPc,&\0&);
UARTprintf(SendPc);
FROK=tcp_write(pcb,SendPc,strlen(SendPc),0);
if (FROK!=ERR_OK)
&&UARTprintf(&lstcpfail&);
FROK=tcp_output(pcb);
if (FROK!=ERR_OK)
这个串口输出UARTprintf(SendPc)正常,tcp_write()死活没反应啊,我以前可以的啊
在线时间2 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
把局部变量变成全局变量,发送结果就可以了,难道是编程空间不足
在线时间94 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
问题原因也许是由于LWIP的回调函数操作I2C控制器引起的。也许你的程序中,网络收到的命令有的会要求从I2C设备中读取数据,其它任务也可能会操作同一个I2C设备。当I2C操作正在进行时,如果来了一个网络请求也要操作该I2C设备,就有可能会把原来的I2C操作进程打断,插入新的操作,从而导致总线异常。同样道理,操作需要独占的外设的时候也有可能会出现这样的问题。尝试重新初始化I2C控制器,用I2C控制器发起START和STOP和用IO口产生冗余SCL时钟等方法也不能使这些错误标志复位。芯片的系统控制库里找到了可以单独重启I2C模块的函数SysCtlPeripheralReset( SYSCTL_PERIPH_I2C0 )。在检测到I2C控制器错误标志后,先发起START和STOP来释放总线,然后重启并重新初始化MCU的I2C模块,再进行读写操作。这样即使I2C控制器死掉也可以正常操作了。
在线时间5 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
回复 5楼 zjd0608 的帖子
我也遇到了相同的问题,我想原因可能是这样的:tcp_write不阻塞,并且不做数据拷贝,当使用临时变量时,函数返回,临时变量失效,发送是失败。当使用全局变量时,函数返回,变量仍可使用,后台的发送成功。
Powered by
逛了这许久,何不进去瞧瞧?JAVA开发中遇到的问题和解答汇总_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JAVA开发中遇到的问题和解答汇总
上传于|0|0|文档简介
&&JAVA开发中遇到的问题和解答汇总
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢> 怎么判断写在类里面的回调函数执行完毕
怎么判断写在类里面的回调函数执行完毕
tangyi & &
发布时间: & &
浏览:14 & &
回复:1 & &
悬赏:0.0希赛币
如何判断写在类里面的回调函数执行完毕某个回调函数写在类里
public & class & A
& Private & Delegate & Sub & CallAsyncDOExcelDelegate(ByRef & lObjDataSet & As & DataSet)
& Private & Sub & CallAsyncDOExcel(ByRef & lObjDataSet & As & DataSet)
end & sub &
& Public & Sub & ExportExcel(ByRef & lObjDataSet & As & DataSet)
& Dim & doWork & As & New & CallAsyncDOExcelDelegate(AddressOf & CallAsyncDOExcel)
& doWork.BeginInvoke(lObjDataSet,Nothing, & Nothing)
end & class
前台Form调用
& Private & Sub & cmdExcel_Click(ByVal & sender & As & System.Object, & ByVal & e & As & System.EventArgs) & Handles & cmdExcel.Click
& a.ExportExcel(oDataSet)
& End & Sub
问题是:我在前台button & click事件里,如何判断这个类中
的a.ExportExcel(oDataSet)异步执行完毕,
执行前,我要把button.enable=false
执行完,再吧button.enable=true
你delegate有一个方法EndInvoke,可以获得委托执行完毕.你改一下人的程序就行了!tangying12 & &
10:38:17 & &
& & (0)(1)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&12:05 提问
全局键盘钩子函数的回调函数有时无效
#include "myHooke.h"
#include &windows.h&
#include &winuser.h&
#include &stdlib.h&
#include &stdio.h&
int ndown = 0;
HHOOK hhkHook = NULL;
//定义钩子句柄
HINSTANCE hInstance = NULL;
//程序实例
BOOL APIENTRY DllMain( HANDLE hModule,
ul_reason_for_call,
LPVOID lpReserved
switch (ul_reason_for_call)
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
hInstance = (HINSTANCE)hM //得到DLL实例
return TRUE;
//回调函数
__declspec(dllexport) LRESULT CALLBACK myHookProc(int nCode, WPARAM wParam, LPARAM lParam)
LRESULT Result=CallNextHookEx(hhkHook, nCode, wParam, lParam);
if(wParam == 'M' && (lParam & 0x))
printf("M is downed ! %d\n", ndown++);
//加载钩子
int load()
if(!(hhkHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)myHookProc, hInstance, 0)))
return FALSE;
return TRUE;
//卸载钩子
int unload()
return UnhookWindowsHookEx(hhkHook);
myHooke.h:
#ifndef MYHOOKD_H
#define MYHOOKD_H
#define EXPORT __declspec(dllexport)
#define _WIN32_WINNT 0x400
EXPORT int load();
EXPORT int unload();
调用的函数:
#include &windows.h&
#include &winuser.h&
#include &stdio.h&
#include &stdlib.h&
typedef int (*FUNCTION)();
int main(int argc, char *argv[])
HINSTANCE hD
FUNCTION loadhook = NULL;
FUNCTION unloadhook = NULL;
hDll = LoadLibrary("..\\myHooke\\Debug\\myHooke.dll");
if(hDll != NULL)
loadhook = (FUNCTION)GetProcAddress(hDll, "load");
unloadhook = (FUNCTION)GetProcAddress(hDll, "unload");
if(loadhook == NULL)
MessageBox(0, "loadhook failed", "MyHook", MB_OK);
if(unloadhook == NULL)
MessageBox(0, "unloadhook failed", "MyHook", MB_OK);
if(!loadhook())
printf("hook is load !");
MessageBox(0, "Hold on box", "MyHook", MB_OK);
//使用循环会使程序卡住,所以用了MessageBox是程序暂停
Sleep(1000);
unloadhook();
FreeLibrary(hDll);
有些出口可以获取键盘消息,有些不能获取键盘消息,这是全局钩子,我是菜鸟,求大神帮助啊!!!
补充一下,程序运行时,切换到其他程序,有的可以获取键盘消息,printf有响应;有的没有任何响应,比如切换到网页等;
我想实现的功能是:无论在哪里,只要键盘按下,我的程序就会有响应 打印按键被按下的消息
按赞数排序
补充一下,程序运行时,切换到其他程序,有的可以获取键盘消息,printf有响应;有的没有任何响应,比如切换到网页等;
我想实现的功能是:无论在哪里,只要键盘按下,我的程序就会有响应 打印按键被按下的消息。
你需要使用低级键盘钩子
WH_KEYBOARD_LL
WH_KEYBOARD_LL 会被杀毒软件阻止的啊,能告诉我为什么WH_KEYBOARD不可以吗?
WH_KEYBOARD
一般还是在系统处理后处理,注入式键盘挂钩(注入dll到目标进程估计没人会喜欢),所以像Ctrl+alt+del 系统会先处理掉,WH_KEYBOARD没法截获
WH_KEYBOARD_LL是在系统处理前处理的,所以很容易引起挂起之类的问题,不过操作系统通过LowLevelHooksTimeout控制超时,如果这个时间后HOOK函数还没返回,就直接被忽略了
所以要监视键盘,还是用WH_KEYBOARD_LL吧
其他相似问题

我要回帖

更多关于 避孕药失效几率 的文章

 

随机推荐