|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
271 楼』:
Quote: | Originally posted by godai at 2008-7-17 12:00:
郭大大, 您的winsail程序在试用中出现一个现象: 就是在振动环境中有时候偶尔会发生PS2鼠标指针乱飞掉的情况。 初步判断是干扰引起的鼠标通讯错误 ... |
|
关于鼠标在振动的工业环境中乱跳的情况可能是由于用了“光电鼠标”,建议在工业强振动环境用“机械式滚轮鼠标”试一试。
|
|
2008-11-20 11:18 |
|
|
windowsvesta
初级用户
积分 138
发帖 67
注册 2007-7-4 来自 云南
状态 离线
|
|
2009-3-5 00:45 |
|
|
andyond
新手上路
积分 16
发帖 8
注册 2009-3-12
状态 离线
|
|
2009-3-15 10:05 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
274 楼』:
窗口控件支持了“命令快捷键”函数
void CWindow::AddCommandKey(WORD wKey, void far (*pMyFc)(CObject *));
函数功能:增加键盘快捷键(无需控件宿主)
入口参数:wKey ------ 虚拟按键值。例如F1键是VK_F1,F1键是VK_F2,...,F10键是VK_F10
pMyFc ---- 回调函数。原型为
void far MyFc(CObject* pObject)
{
CWindow* pWindow = (CWindow *)pObject;
//下面增加您自己的代码
//......
}
出口参数:无
返 回 值:无
[ Last edited by firstsail on 2009-4-2 at 23:39 ]
|
|
2009-4-2 23:36 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
275 楼』:
发现数据库Flush函数的严重出错
发现经过:
有客户反映,程序未正常关机时,经常造成数据库文件的数据丢失,数据库文件非法!
检查程序:
自己的程序每写一次数据纪录,已经调用了“CFoxpro::Flush()”函数,其作用是将数据真正写入磁盘,如果有上面说过的情况,理应是该函数有问题。
BOOL CFoxpro::Flush()
{
//检查文件指针的合法性
if (NULL == m_pFile)
{
return(FALSE);
}
//刷新磁盘缓冲区
::fflush(m_pFile);
return(TRUE);
}
初步怀疑C函数库提供的fflush()函数并不是将磁盘冲区数据全部写入磁盘,经过使用BC31的帮助文件,发现真不是这回事!正确应如下修改
解决问题:
将CFoxpro::Flush()修改为如下所示,已解决
BOOL CFoxpro::Flush()
{
//检查文件指针的合法性
if (NULL == m_pFile)
{
return(FALSE);
}
//刷新磁盘缓冲区
::fflush(m_pFile);
int duphandle = ::dup(fileno(m_pFile));
::close(duphandle);
return(TRUE);
}
|
|
2009-5-6 08:12 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
276 楼』:
WinSail的TCP/IP栈是如何工作的?
为了让大家对WINSAIL在单任务系统中如何调度TCP/IP的。下面作一些说明!
(1)在窗口的CWindow::OnIdle(CObject* pObj)函数中,调用了TCP/IP的循环处理入口函数指针pSocketLoopFc指向的套接字循环函数。
CWindow::OnIdle(CObject* pObj)的源代码如下
extern BOOL bAfxNetcard; //是否在CONFIG.Sys文件中配置需要网卡标志
extern BOOL bAfxInitSocket; //是否套接字成功初始化标志
extern BOOL (*__pSocketInitFc)(); //套接字初始化函数指针
extern BOOL (*__pSocketCloseFc)();//套接字关闭函数指针
extern BOOL (*__pSocketLoopFc)(BOOL, BOOL, BOOL);//套接字循环函数指针
void CWindow::OnIdle()
{
//这里判断是否需要执行TCP/IP栈
if (bAfxNetcard && bAfxInitSocket && __pSocketLoopFc != NULL)
{
__pSocketLoopFc(TRUE, TRUE, TRUE);
}
//这里执行void CWindow::SetIdleFc()函数注册的“空闲函数指针“
if (m_pIdleFc != NULL)
{
m_pIdleFc((CObject*)this);
}
}
(2)注册TCP/IP协议栈的函数AfxRegisterNetcardEntry()源代码如下
BOOL AfxRegisterNetcardEntry(BOOL (*pSocketInitFc)(),
BOOL (*pSocketCloseFc)(), BOOL (*pSocketLoopFc)(BOOL, BOOL, BOOL))
{
if (pSocketInitFc == NULL || pSocketCloseFc == NULL)
{
return(FALSE);
}
__pSocketInitFc = pSocketInitFc;
__pSocketCloseFc = pSocketCloseFc;
__pSocketLoopFc = pSocketLoopFc;
return(TRUE);
}
(3)WinSail默认的
套接字初始化函数:GlobalInitSocket()函数
套接字关闭函数是:GlobalCloseSocket()函数
套接字循环函数:EthernetEntry()函数
EthernetEntry只处理ARP、RARP、ICMP请求以及没有发送的数据包及时发送出去,对于其它的请求则被忽略。
所以用户应用还需要重新编写自己的“套接字循环函数”。
//下面是用户自己编写的“套接字循环函数”。这个可以参照Sail3000工程的Sail2000.Cpp文件和Remote_N.Cpp文件,它实现了“文件传输、键盘按键下发、鼠标按键下发、屏幕上传、QQ聊天”等功能。
BOOL User_EthernetEntry(BOOL bSingle, BOOL bSend, BOOL bIcmp)
{
//运行默认的套接字循环函数
::EthernetEntry(bSingle, bSend, bIcmp);
//下面编写自己的SOCKET查询、读、写等等
//(略)
return(TRUE);
}
(4)由于WINSAIL运行于单任务中,所以任何地方的长时间堵塞,都会造成TCP/IP的长期堵塞。为了减少这情况,在堵塞的循环中,须调用
User_EthernetEnty(TRUE, TRUE, TRUE);
(5)如果用户注册第三方的TCP/IP栈(如Watcp等),初始化函数成功须返回TRUE,否则返回FALSE,WinSail自动对初始化函数的返回标志对bAfxInitSocket变量置位,同时别忘了配置config.Sys文件中的“Netcard”段的“netCard”键值置成 TRUE,方能与WinSail完美结合!
在WINSAIL里面的InitSystem()函数是这样初始化TCP/IP协议栈的:
bAfxInitSocket = FALSE;
if (bAfxNetcard && __pSocketInitFc != NULL &&
__pSocketCloseFc != NULL)
{
if (!__pSocketInitFc())
{
__pSocketCloseFc();
bAfxInitSocket = FALSE;
//AfxMessageBox("网络","无法加载网络!");
}
else
{
bAfxInitSocket = TRUE;
}
}
[ Last edited by firstsail on 2009-5-16 at 02:25 ]
|
|
2009-5-16 01:11 |
|
|
zhiming420
新手上路
积分 5
发帖 3
注册 2009-11-9
状态 离线
|
|
2009-11-15 09:08 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
278 楼』:
网站因地址解析错误,导致网站几个月不能正常登录.现在终于可以登录了!
|
|
2010-7-5 14:17 |
|
|
houwenhui
新手上路
积分 14
发帖 9
注册 2010-7-3
状态 离线
|
|
2010-7-9 13:56 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
280 楼』:
WinSail的MakeDlg.Exe文件升级
WinSail的MakeDlg.Exe文件升级
增高了两个选项
(1)将CLabel和CGroup控件解释成非控件
(2)将CGroup坐标与Windows对齐
<1>如果选中"CLabel和CGroup控件解释成非控件"选项, 则将所有的CLabel与CGroup控件的生成代码被注释,并且生成void FAR OnDraw_VccFunction(CObject *)函数,函数内部生成代码如下:
其中CLabel控件解释成ChPrintf()函数
其中CGroup控件解释成DrawBoxCaptionEx()函数
这样设计的目的是为了节省宝贵的内存
<2>如果选中"将CGroup坐标与Windows对齐"选项, 则WinSail的Group控件与Windows的Group控件的可视边框区域相同,强列推荐使用该选项.
下载地址:http://www.firstsail.com.cn/software.html
[ Last edited by firstsail on 2011-1-14 at 11:23 ]
|
|
2011-1-14 11:15 |
|
|
wuhengsi
新手上路
积分 10
发帖 5
注册 2010-11-7
状态 离线
|
|
2011-1-16 00:48 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
|
2011-1-19 10:16 |
|
|
f371575950
新手上路
积分 10
发帖 5
注册 2016-12-24
状态 离线
|
|
2016-12-24 23:58 |
|
|
firstsail2
新手上路
积分 5
发帖 4
注册 2017-5-16
状态 离线
|
|
2018-7-13 20:16 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
285 楼』:
如果定制可移值的Excel能识别的数据库
在单片机系统,或Linux系统中,经常要用到自定义的数据库,该数据库文件希望能被Windows下的Office Excel识别,怎么办呢?现在有一个方法,可以使用Foxpro2.6版本的数据库,文件结构是公开的,且可被Excel识别。
在WinSail中,由Foxpro.h和Foxpro.Cpp文件组成,稍后会公开所有源代码上来,如果有需要的人士可以移值!
|
|
2018-7-14 12:08 |
|