导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[angelas]各位高手帮忙看看这个程序,万分感谢



No.85357
作者:angelas
邮件:angelas_apple@163.com
ID:43453
登陆:3次
文章数:3篇
最后登陆IP:61.49.188.25
最后登陆:2005/12/3 14:25:28
注册:2005/11/5 12:46:57
财富:110
发帖时间:2005/11/5 12:50:33
发贴者IP:61.49.133.186
标题:angelas:各位高手帮忙看看这个程序,万分感谢
摘要:No.85357各位高手帮忙看看这个程序,万分感谢 我现在在做一个关于8*8矩阵面板按键控制的C语言编程,8输入8输出,任何一个输入可以
选择一个或多个输出,有8个数字按键和“确定”,“end","and"三个功能按键,比如说我
要1通道输入2,3通道输出,我就按 1”确定”2  "AND"  3  "END",最终将信号传
送给芯片AD8109处理,用到AD8109的CLK,DATAIN,UPDATA三个管脚,现在程序写好了,可是
还有点问题,麻烦各位高手给看看,修改修改,不胜感激!
#define USERPORT 3333/*用户定义端口号*/
#define IDM-START101/*“启动”菜单项标志*/
#define IDM-EXIT102/*“退出”菜单项标志*/
#define UM-SOCKWM-USER+0x100/*用户定义网络消息*/
ClientMenu MENU/*客户机菜单*/
BEGIN
POPUP \"&Server\"
BEGIN
MENUITEM \"&Start...\", IDM-START
MENUITEM \"&Stop\",IDM-STOP
END
END
#include   <winsock.h>  /*必须包含winsock.h头文件*/
HANDLEhInst;
charserver-address = {0};/*地址缓冲区*/
charbuffer;/*接收发送缓冲区*/
char FAR *lpBuffer=&buffer;
SOCKETs=0;/*套接字*/
struct sockaddr-in dst-addr;/*目标地址*/
struct hostent *hostaddr;/*主机地址*/
struct hostent hostnm;
intcount=0;/*发送接收循环计数器*/
int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lp
CmdL
ine, int nCmdShow)
{
HWND hWnd;
MSGmsg;
lstrcpy((LPSTR) server-address, lpCmdLine);/*取主机名字*/
if (!hPrevInstance)
if (!InitApplication(hInstance))
return (FALSE);
hInst=hInstance;
hWnd=CreateWindow(\"ClientClass\",\"Windows ECHO Client\",
WS-OVERLAPPEDWINDOW,CW-USEDEFAULT,CW-USEDEFAULT,
CW-USEDEFAULT,CW-USEDEFAULT,
NULL,NULL,hInstance,NULL);
if (!hWnd)
return (FALSE);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
/*给主窗口函数发送WM-USER消息*/
PostMessage(hWnd,WM-USER,(WPARAM) 0,(LPARAM) 0);
while (GetMessage(&msg,NULL,NULL,NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
long FAR PASCAL
ClientProc(HWND hWnd, unsigned message, UINT wParam, LONG lParam)
{
int length,i;
WSADATAwsaData;/*描述实现细节的数据结构*/
intStatus;
switch (message) {
case WM-USER:
Status=WSAStartup(0x101,&wsaData);
if (Status !=0) {
AlertUser(hWnd,\"WSAStartup() failed\");
PostQuitMessage(0);
}
if (LOBYTE(wsaData.wVersion) !=1 || HIBYTE(wsaData.wVersion) !=1)
{ AlertUser(hWnd, \"WSAStartup() Version not match\");
WSACleanup();
PostQuitMessage(0);
}
hostaddr=gethostbyname(server-address);
if (hostaddr==NULL) {
AlertUser(hWnd, \"gethostbyname ERROR \");
WSACleanup ();
PostQuitMessage(0);
}
memcpy(&hostnm,hostaddr,sizeof(struct hostent));
break;
case WM-COMMAND:
switch (wParam) {
case IDM-START:
if (!Client(hWnd)) {
closesocket(s);
AlertUser(hWnd, \"Start Failed\");
}
break;
case IDM-STOP:
WSACleanup();
PostQuitMessage(0);
break;
}
break;
case UM-SOCK:
switch (lParam) {
case FD-CONNECT:/*:连接建立*/
if (!set-Select(hWnd, FD-WRITE))/*选择:期望发送*/
closesocket(s);
break;
case FD-READ:/*:读准备好*/
if (!receive-pkt(hWnd)) {/*接收数据*/
AlertUser(hWnd, \"Receive Packet Failed\");
closesocket(s);
break;
}
if (!set-Select(hWnd, FD-WRITE))/*选择:期望发送*/
closesocket(s);
break;
case FD-WRITE:/:写准备好*/
for (i=0;i  <1024;i++)
buffer=(char) 'A'+i % 26;
length=1024;
if (!(send-pkt(hWnd,length))) {/*发送数据*/
AlertUser(hWnd, \"Packet Send Failed\");
closesocket(s);
break;
}
if (!set-Select(hWnd, FD-READ)) /*选择:期望接收*/
closesocket(s);
break;
case FD-CLOSE:/*:连接关闭。操作:停止异步选择*/
if (WSAAsyncSelect(s,hWnd,0,0)==SOCKET-ERROR)
AlertUser(hWnd, \"WSAAsyncSelect Failed\");
AlertUser(hWnd, \"Socket has been closed\");
break;
default:/*警告,其他事件忽略*/
if (WSAGETSelectERROR(1Param) !=0) {
AlertUser(hWnd, \"Socket Report Failure\");
closesocket(s);
break;
}
break;
}
break;
case WM-DESTROY:
closesocket(s);/*关闭窗口前应该关闭套接字,并*/
WSACleanup();/*终止Windows Sockets DLL*/
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, message,
wParam, lParam));
}
return (NULL);
}
程序4:部分Windows程序源代码(子程序)
BOOL Client(HWND hWnd)/*客户机子程序*/
{
if (!make-skt(hWnd))/*建立套接字*/
return(FALSE);
if (!set-Select(hWnd,FD-CONNECT))/*设置异步连接*/
return(FALSE);
if (!connect-skt(hWnd))/*建立连接*/
return(FALSE);
return(TRUE);
}
BOOL receive-pkt(HWND hWnd)/*接收数据子程序*/
{
HDC dc;
intlength;
int11,12,13;
charlinel,line2,line3;
count ++;/*循环计数器加1*/
if ((length=recv(s,lpBuffer,1024,0))==SOCKET-ERROR)
return(FALSE); /*如果接收数据出错,则返回FALSE*/
if (length==0) /*接收数据长度为零,表示连接中断*/
return(FALSE);
if (dc=GetDC(hWnd)) { /*接收数据成功,显示信息*/
11=wsprintf((LPSTR) line1,\"TCP Echo Client No.%d\",count);
12=wsprintf((LPSTR) line2,\"Received %d bytes\", length);
13=wsprintf((LPSTR) line3,\"Those are:%c,%c,%c,%c,%c,%c\",
buffer,buffer,buffer,buffer,buffer,buffer
);
TextOut(dc, 10, 2, (LPSTR) linel, 11);
TextOut(dc, 10, 22, (LPSTR) line2, 12);
TextOut(dc, 10, 42, (LPSTR) line3, 13);
ReleaseDC(hWnd, dc);
}
return(TRUE);
}
BOOL set-Select(HWND hWnd, long lEvent)/*异步选择子程序*/
{
if (WSAAsyncSelect(s,hWnd, UM-SOCK, lEvent)==SOCKET-ERROR) {
AlertUser(hWnd, \"WSAAsyncSelect Failed\");
return (FALSE);
}
return (TRUE);
}
BOOL make-skt(HWND hWnd)/*建立套接字子程序*/
{
if ((s=socket(AF-INET,sock-type,0))==INVALID-SOCKET) {
AlertUser(hWnd, \"Socket Failed\");
return (FALSE);
}
return (TRUE);
}
BOOL connect-skt(HWND hWnd)/*建立连接子程序*/
{
memset((void*) &dst-addr, sizeof(dst-addr),0);
dst-addr.sin-family=AF-INET;
dst-addr.sin-port=htons(USERPORT);
dst-addr.sin-addr.s-addr=*((unsigned long *)hostnm.h-addr-list );
if (connect(s, (struct sockaddr *) & dst-addr,
sizeof(dst-addr))==SOCKET-ERROR) {
AlertUser(hWnd, \"Connect Failed\");
return (FALSE);
}
return (TRUE);
}
BOOL send-pkt(HWND hWnd, int len)/*发送数据子程序*/
{
int length;
if ((length=send(s,lpBuffer,len,0))==SOCKET-ERROR)
return (FALSE);
else if (length !=len) {
AlertUser(hWnd, \"Send Length NOT Match!\");
return(FALSE);
}
return (TRUE);
}
/*TCP/IP必要的头文件*/
#include   <sys/types.h>  
#include   <netinet/in.h>  
#include   <sys/socket.h>  
#include   <arpa/inet.h>  
#define USERPORT 3333/*用户定义端口号,与客户机相同*/
#define HOST-IP-ADDR \"166.111.8.80\"/*我们的主机地址*/
main(int argc, char **argv)
{
char buf;/*buffer for sendi ......

>>返回讨论的主题


  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:5186毫秒 查询6次