资源简介
trakStar系列跟踪器的伺服程序,采用多线程命名管道技术,可以为多个进程提供数据输出服务。
代码片段和文件信息
#include “Tracker.h“
#include
#include
#include
#include
#define BUFFERSIZE 256 //缓冲区大小
#define MAX_NUM_PIPES 5 //线程个数,即允许同时连接的客户机个数
//隐藏窗口
#pragma comment( linker “/subsystem:\“windows\“ /entry:\“mainCRTStartup\“ “)
DWORD WINAPI PipeInstanceProc(LPVOID lpParameter); //多线程回调函数
DWORD WINAPI ListenPipeProc(LPVOID lpParameter); //监听管道回调函数
Tracker *tracker;
int main(int argcchar** argv)
{
//判断程序是否运行第二次
HANDLE hMutex = NULL;
TCHAR* lpszName = “TestMutex“;
hMutex = CreateMutex(NULLFALSElpszName);
DWORD dwRet=GetLastError();
if(hMutex)
{
if(ERROR_ALREADY_EXISTS == dwRet)
{
//some warnings here...
CloseHandle(hMutex);
return -1;
}
}
printf(“等待跟踪器启动...\n“);
tracker=new Tracker();
printf(“跟踪器开始写数据...\n“);
HANDLE hThreadHandle;//线程句柄
DWORD threadId;//线程号
//创建五个线程,分别处理一个客户机连接
for (int i=0;i {
hThreadHandle=CreateThread(
NULL//WinNT后永久设为NULL
0//线程初始化堆栈大小,一般设为0
PipeInstanceProc//线程回调函数的指针,即函数名
NULL//传输给回调函数的参数,通过它实现对回调函数的控制
0//线程创建完毕后的状态,0表示创建后执行线程,CREATE_SUSPENDED表示暂时挂起,等待叫醒
&threadId//线程ID值的地址
);
if(hThreadHandle==NULL)
{
printf(“创建线程%d失败!%d\n“iGetLastError());
return 0;
}
printf(“创建命名管道线程%d成功!“i);
}
//等待线程结束
WaitForSingleobject(hThreadHandleINFINITE);
CloseHandle(hThreadHandle);
hThreadHandle=NULL;
delete tracker;
return 0;
}
/*
* 函数名称: PipeInstanceProc
* 函数参数: (in)LPVOID: 附加信息
* 函数作用: 处理一个命名管道实例的线程
* 函数返回值:(DWORD)若顺利完成,则返回1;若获取域名失败,则返回0
*/
DWORD WINAPI PipeInstanceProc(LPVOID lpParameter)
{
HANDLE hPipeHandle;//命名管道的句柄
HANDLE hThreadListen;//管道监听句柄
/*
* 函数名称: CreateNamedPipe
* 函数参数: (in)LPCTSTR 命名管道名字,UNC标准( \\IP地址\Pipe\唯一标识文件路径 )
* (in)DWORD 命名管道模式,单双向,读写控制,安全模式( 均被宏定义好,可位或操作 )
* (in)DWORD 命名管道读,写,等待模式( 均被宏定义好,可位或操作 )
* (in)DWORD 命名管道最多可创建的实例句柄个数
* (in)DWORD 命名管道输出缓冲区大小
* (in)DWORD 命名管道输入缓冲区大小
* (in)DWORD 命名管道默认超时时间
* (in)LPSECURITY_ATTRIBUTES 命名管道安全描述符,若为NULL,则句柄不可继承的默认安全。
* 函数作用: 创建一个命名管道实例
* 函数返回值:(HANDLE)成功则返回命名管道实例的句柄,失败则返回值INVALID_HANDLE_VALUE
*/
hPipeHandle = CreateNamedPipe(
_T(“\\\\.\\pipe\\TrackerService“)
PIPE_ACCESS_DUPLEX
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE |PIPE_WAIT
PIPE_UNLIMITED_INSTANCES
BUFFERSIZE
BUFFERSIZE
0
NULL
);
if (hPipeHandle == INVALID_HANDLE_VALUE)
{
printf(“创建命名管道失败!%d\n“GetLastError());
return 0;
}
printf(“创建命名管道成功!\n“);
HANDLE h;//线程句柄,用于一个客户机退出连接之后,服务器重新建立一个服务线程
//处理客户端信息
while (1)
{
/*
* 函数名称: ConnectNamedPipe
* 函数参数: (in)HANDLE: 命名管道实例句柄
* (in)LPOVERLAPPED 是否锁定式命名管道
* 函数作用: 建立命名管道连接并监听
* 函数返回值:(bool)若顺利建立,则返回true;若顺利失败,则返回false
*/
if (ConnectNamedPipe(hPipeHandleNULL))
{
printf(“有客户端连接命名管道!\n“);
//Create listen pipe thread
hThreadList
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 33 2011-03-31 10:55 TrackerService\Debug\PCIBird3.ini
文件 45056 2011-03-31 10:54 TrackerService\Debug\TrackerService.exe
文件 446976 2011-03-31 10:57 TrackerService\Debug\TrackerService.ilk
文件 625664 2011-03-31 10:54 TrackerService\Debug\TrackerService.pdb
文件 33 2010-11-03 23:21 TrackerService\Release\PCIBird3.ini
文件 11776 2010-11-04 11:48 TrackerService\Release\TrackerService.exe
文件 437248 2010-11-04 11:48 TrackerService\Release\TrackerService.pdb
文件 6058 2011-03-31 10:57 TrackerService\TrackerService\Debug\BuildLog.htm
文件 52345 2011-03-31 10:57 TrackerService\TrackerService\Debug\Main.obj
文件 69 2011-03-31 10:54 TrackerService\TrackerService\Debug\mt.dep
文件 23412 2011-03-26 16:49 TrackerService\TrackerService\Debug\SingleClass.obj
文件 66330 2011-03-31 10:53 TrackerService\TrackerService\Debug\Tracker.obj
文件 663 2011-03-31 10:54 TrackerService\TrackerService\Debug\TrackerService.exe.em
文件 728 2011-03-31 10:54 TrackerService\TrackerService\Debug\TrackerService.exe.em
文件 621 2011-03-31 10:54 TrackerService\TrackerService\Debug\TrackerService.exe.intermediate.manifest
文件 609280 2011-03-31 10:57 TrackerService\TrackerService\Debug\vc90.idb
文件 266240 2011-03-31 10:57 TrackerService\TrackerService\Debug\vc90.pdb
文件 5507 2011-03-31 10:57 TrackerService\TrackerService\Main.cpp
文件 33 2011-03-31 10:51 TrackerService\TrackerService\PCIBird3.ini
文件 5172 2010-11-04 12:01 TrackerService\TrackerService\Release\BuildLog.htm
文件 587127 2010-11-04 11:59 TrackerService\TrackerService\Release\Main.obj
文件 69 2010-11-04 11:48 TrackerService\TrackerService\Release\mt.dep
文件 591728 2010-11-03 23:20 TrackerService\TrackerService\Release\Tracker.obj
文件 616 2010-11-04 11:48 TrackerService\TrackerService\Release\TrackerService.exe.intermediate.manifest
文件 322560 2010-11-04 11:59 TrackerService\TrackerService\Release\vc90.idb
文件 241664 2010-11-04 11:59 TrackerService\TrackerService\Release\vc90.pdb
文件 327 2011-03-26 16:47 TrackerService\TrackerService\SingleClass.cpp
文件 227 2011-03-26 16:32 TrackerService\TrackerService\SingleClass.h
文件 3221 2011-03-26 17:14 TrackerService\TrackerService\Tracker.cpp
文件 2012 2010-11-24 23:40 TrackerService\TrackerService\Tracker.h
............此处省略15个文件信息
相关资源
- 很详细的伺服电机讲解PPT
- 松下A4伺服详细说明书
- 松下伺服软件panaterm 3.7
- 运动控制卡与伺服马达
- EP100伺服系统原理图+PCB+源代码.rar
- 松下伺服电机选型软件
- 禾川伺服调试软件S-TUNE
- 富士伺服电机伺服驱动器数据手册
- 赐福伺服操作手册
- 伺服电机应用技术.pdf颜嘉男
- LUST 伺服调试软件
- 全数字化交流伺服系统中电流环的设
- 永磁同步电机控制系统-陈荣老师主编
- 小型交流伺服电机控制电路设计.pdf
- 禾川伺服X3系列说明书
- 机器设计中伺服电机及驱动器的选型
- 三菱Q系列PLC教程qd75教程控制步进伺服
- 永磁同步电机伺服控制位置环控制论
- 三菱伺服电机手册中文
- Kollmorgen AKD系列伺服驱动器用户使用说
- IndraWorks_Ds_Installer_13
- 伺服驱动器 EP100全套资料
- FESTO 伺服气缸
- 三洋伺服驱动器EtherCAT接口中文说明
- 富士伺服说明书
- 富士伺服Alpha5 Smart用户手册
- stm32伺服电机驱动
- 上银Lightening 0.193伺服设置软件多语言
- 安川SGDV伺服驱动器用户手册
- 国外非常流行的步进电机STM32控制代码
评论
共有 条评论