万元求一个DEMO程序(北京)

[复制链接]
 楼主| ysdx 发表于 2008-6-18 19:10 | 显示全部楼层 |阅读模式
demo, TE, IO, ST, AD
手头有一个PCI通讯板卡。有DLL驱动。测试DEMO原来是VC环境下。现在要改成c#环境。这里面涉及到C#如何调用原来DLL的API函数问题。任务单一:就是把原来的VC环境的demo程序用C#写。下面是VC环境的DEMO程序。<br />//&nbsp;Test_pcitio.cpp<br />//<br />//&nbsp;Generated&nbsp;by&nbsp;DriverWizard&nbsp;version&nbsp;DriverStudio&nbsp;2.7.0&nbsp;(Build&nbsp;562)<br />//<br />//&nbsp;This&nbsp;console&nbsp;application&nbsp;demonstrates&nbsp;how&nbsp;to&nbsp;open&nbsp;a&nbsp;handle<br />//&nbsp;to&nbsp;a&nbsp;device&nbsp;in&nbsp;your&nbsp;driver,&nbsp;and&nbsp;communicate&nbsp;with&nbsp;the&nbsp;driver<br />//&nbsp;using&nbsp;Read,&nbsp;Write,&nbsp;and&nbsp;DeviceIoControl&nbsp;calls,&nbsp;as&nbsp;appropriate.<br />//<br />//&nbsp;This&nbsp;test&nbsp;program&nbsp;attempts&nbsp;to&nbsp;open&nbsp;the&nbsp;device&nbsp;using&nbsp;the<br />//&nbsp;GUID&nbsp;defined&nbsp;in&nbsp;&quot;..PcitioDeviceinterface.h&quot;<br /><br />#include&nbsp;&ltstdlib.h&gt<br />#include&nbsp;&ltstdio.h&gt<br />#include&nbsp;&ltwindows.h&gt<br /><br /><br />#include&nbsp;&ltwinioctl.h&gt<br />#include&nbsp;&quot;..pcitioioctl.h&quot;<br /><br />#include&nbsp;&quot;..PcitioDeviceinterface.h&quot;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Has&nbsp;class&nbsp;GUID&nbsp;definition<br /><br /><br /><br /><br />//&nbsp;This&nbsp;function&nbsp;is&nbsp;found&nbsp;in&nbsp;module&nbsp;OpenByIntf.cpp<br />HANDLE&nbsp;OpenByInterface(GUID*&nbsp;pClassGuid,&nbsp;DWORD&nbsp;instance,&nbsp;PDWORD&nbsp;pError);<br /><br />typedef&nbsp;void&nbsp;VOIDFUNC();<br /><br />HANDLE&nbsp;h,IOWaiter,&nbsp;hEvent;<br />//&nbsp;Prototypes<br />void&nbsp;Usage(void);<br />void&nbsp;ShowIoctlValues(void);<br /><br />//&nbsp;&nbsp;&nbsp;&nbsp;TODO:<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;can&nbsp;redefine&nbsp;the&nbsp;IOCTL&nbsp;handler&nbsp;prototypes&nbsp;as&nbsp;needed,&nbsp;adding<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appropriate&nbsp;parameters&nbsp;that&nbsp;can&nbsp;be&nbsp;collected&nbsp;from&nbsp;the&nbsp;command&nbsp;line.<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;To&nbsp;do&nbsp;this&nbsp;you&nbsp;must&nbsp;modify&nbsp;the&nbsp;command&nbsp;line&nbsp;parsing&nbsp;logic.&nbsp;&nbsp;An<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;example&nbsp;of&nbsp;this&nbsp;is&nbsp;shown&nbsp;in&nbsp;comments&nbsp;throughout&nbsp;the&nbsp;test&nbsp;application.<br />//<br />//===&nbsp;Parameterized&nbsp;IOCTL&nbsp;Example&nbsp;===<br />//&nbsp;void&nbsp;Test_IOCTL_PARAMETERIZED(int&nbsp;nVal,&nbsp;ULONG&nbsp;dwVal);<br />//void&nbsp;Test_PCITIO_IOCTL_DMAHEADADD(ULONG&nbsp;mode);<br />//ULONG&nbsp;Test_PCITIO_IOCTL_INTCSR(ULONG&nbsp;seldelay,ULONG&nbsp;selstart,ULONG&nbsp;selend,ULONG&nbsp;selindex,ULONG&nbsp;done);<br />ULONG&nbsp;Test_PCITIO_IOCTL_DMABYTES(ULONG&nbsp;add,ULONG&nbsp;data);<br />void&nbsp;Test_PCITIO_IOCTL_DMAREAD(void);<br />void&nbsp;Test_PCITIO_IOCTL_DMAWRITE(void);<br />/*ULONG&nbsp;startout(ULONG&nbsp;delaynum,ULONG&nbsp;startaddress,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;endaddress,ULONG&nbsp;indexaddress<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,ULONG&nbsp;channelnum);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />//void&nbsp;writesize(ULONG&nbsp;x,ULONG&nbsp;y);<br />//void&nbsp;writebuf(ULONG&nbsp;address,BYTE&nbsp;data);<br /><br />void&nbsp;CloseIfOpen(void);<br /><br /><br />//&nbsp;Global&nbsp;data<br />void&nbsp;&nbsp;&nbsp;&nbsp;ReadOne();<br />void&nbsp;&nbsp;&nbsp;&nbsp;WriteOne();<br />void&nbsp;&nbsp;&nbsp;&nbsp;Read();<br />void&nbsp;&nbsp;&nbsp;&nbsp;Write();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;i&nbsp;=&nbsp;&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;tp&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;&nbsp;&nbsp;&nbsp;*wrbuf;<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;*wrrbuf;<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;*ttfbuf;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;&nbsp;&nbsp;&nbsp;*wrfilebuf;<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;*membuf;<br />&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;start=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;kk=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;chang,kuan;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//全局缓冲区,就是你们应用程序的内存缓冲区<br />&nbsp;&nbsp;&nbsp;&nbsp;//现申请大小512M字节,可以修改大小<br /><br />#define&nbsp;N_IOCODES&nbsp;&nbsp;&nbsp;&nbsp;6<br /><br />//&nbsp;Names&nbsp;of&nbsp;IOCTL&nbsp;codes<br />//<br />char&nbsp;*IOnames[N_IOCODES+1]&nbsp;=<br />{<br /><br />//===&nbsp;Parameterized&nbsp;IOCTL&nbsp;Example&nbsp;===<br />//&nbsp;&nbsp;&nbsp;&nbsp;&quot;IOCTL_PARAMETERIZED&quot;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;PCITIO_IOCTL_DMAHEADADD&quot;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;PCITIO_IOCTL_INTCSR&quot;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;PCITIO_IOCTL_DMABYTES&quot;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;PCITIO_IOCTL_SETEVENT&quot;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;PCITIO_IOCTL_DMAREAD&quot;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;PCITIO_IOCTL_DMAWRITE&quot;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&quot;&quot;<br />};<br /><br />//&nbsp;IOCTL&nbsp;codes<br />//<br />int&nbsp;IOcodes[N_IOCODES+1]&nbsp;=<br />{<br /><br />//===&nbsp;Parameterized&nbsp;IOCTL&nbsp;Example&nbsp;===<br />//&nbsp;&nbsp;&nbsp;&nbsp;IOCTL_PARAMETERIZED,<br />&nbsp;&nbsp;&nbsp;&nbsp;PCITIO_IOCTL_DMAHEADADD,<br />&nbsp;&nbsp;&nbsp;&nbsp;PCITIO_IOCTL_INTCSR,<br />&nbsp;&nbsp;&nbsp;&nbsp;PCITIO_IOCTL_DMABYTES,<br />&nbsp;&nbsp;&nbsp;&nbsp;PCITIO_IOCTL_SETEVENT,<br />&nbsp;&nbsp;&nbsp;&nbsp;PCITIO_IOCTL_DMAREAD,<br />&nbsp;&nbsp;&nbsp;&nbsp;PCITIO_IOCTL_DMAWRITE,<br />&nbsp;&nbsp;&nbsp;&nbsp;0<br />};<br /><br /><br />//&nbsp;Handle&nbsp;to&nbsp;device&nbsp;opened&nbsp;in&nbsp;driver.<br />//<br />HANDLE&nbsp;&nbsp;&nbsp;&nbsp;hDevice&nbsp;=&nbsp;INVALID_HANDLE_VALUE;<br /><br />//&nbsp;Class&nbsp;GUID&nbsp;used&nbsp;to&nbsp;open&nbsp;device<br />//<br />GUID&nbsp;ClassGuid&nbsp;=&nbsp;PcitioDevice_CLASS_GUID;<br /><br /><br /><br />//dll&nbsp;function&nbsp;declare&nbsp;start<br />typedef&nbsp;BOOL&nbsp;(/*_stdcall*/&nbsp;*TDMAHEADADD)(ULONG&nbsp;mode);//void&nbsp;Test_PCITIO_IOCTL_DMAHEADADD(ULONG&nbsp;mode)<br />TDMAHEADADD&nbsp;DmaAdd;<br /><br />typedef&nbsp;ULONG&nbsp;(*TDMABYTES)(ULONG&nbsp;add,ULONG&nbsp;data);//ULONG&nbsp;Test_PCITIO_IOCTL_DMABYTES(ULONG&nbsp;add,ULONG&nbsp;data)<br />TDMABYTES&nbsp;DmaBytes;<br /><br />typedef&nbsp;ULONG&nbsp;(*TIOCTLINTCSR)(ULONG&nbsp;seldelay,ULONG&nbsp;selstart,ULONG&nbsp;selend,ULONG&nbsp;selindex,ULONG&nbsp;done);<br />TIOCTLINTCSR&nbsp;TestPciIntCSR;<br /><br />typedef&nbsp;ULONG&nbsp;(*PStartout)(ULONG&nbsp;delaynum,ULONG&nbsp;startaddress,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;endaddress,ULONG&nbsp;indexaddress<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,ULONG&nbsp;channelnum);<br />PStartout&nbsp;startout1;<br /><br />typedef&nbsp;void&nbsp;(*PWriteSize)(ULONG&nbsp;x,ULONG&nbsp;y);<br />PWriteSize&nbsp;writesize;<br /><br />typedef&nbsp;ULONG&nbsp;(*PWriteBuf)(ULONG&nbsp;address,BYTE&nbsp;data);<br />PWriteBuf&nbsp;writebuf;<br /><br />typedef&nbsp;ULONG&nbsp;(*PTransData)(ULONG&nbsp;channelnum);<br />PTransData&nbsp;Transdata;<br /><br /><br />///dll&nbsp;end&nbsp;<br />////////////////////////////////////////////////////////////////////////<br />//&nbsp;Exit<br />//<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;a&nbsp;message&nbsp;and&nbsp;exit<br />//<br />&nbsp;&nbsp;&nbsp;void&nbsp;Exit(int&nbsp;res)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Exiting...

&quot;);<br />//&nbsp;&nbsp;&nbsp;&nbsp;CloseIfOpen();//like<br />&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hDevice);<br />&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(IOWaiter);<br />&nbsp;&nbsp;&nbsp;&nbsp;exit(res);<br />}<br /><br /><br />////////////////////////////////////////////////////////////////////////<br />//&nbsp;Main&nbsp;entry&nbsp;point<br />//<br />//<br /><br /><br />int&nbsp;__cdecl&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nArgIncrement&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;jk=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;delaynum;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;startaddress;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;endaddress;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;indexaddress;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;channelnum;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;rp=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;line[256];<br />//===&nbsp;Parameterized&nbsp;IOCTL&nbsp;Example&nbsp;===<br />//&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nVal;<br />//&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;&nbsp;&nbsp;&nbsp;dwVal;<br />&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Test&nbsp;application&nbsp;Test_pcitio&nbsp;starting...
&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;input&nbsp;delaynumber&nbsp;(hex16&nbsp;:&nbsp;0&nbsp;to&nbsp;40):
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;fgets(line,&nbsp;sizeof(line),&nbsp;stdin);<br />&nbsp;&nbsp;&nbsp;&nbsp;sscanf&nbsp;(line,&nbsp;&quot;%lx&quot;,&delaynum);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;delay&nbsp;num&nbsp;is&nbsp;%lx
&quot;,delaynum);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;input&nbsp;startnum&nbsp;(hex16&nbsp;:&nbsp;0&nbsp;to&nbsp;10000):
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;fgets(line,&nbsp;sizeof(line),&nbsp;stdin);<br />&nbsp;&nbsp;&nbsp;&nbsp;sscanf&nbsp;(line,&nbsp;&quot;%lx&quot;,&startaddress);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;start&nbsp;num&nbsp;is&nbsp;%lx
&quot;,startaddress);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;input&nbsp;endnumber&nbsp;(hex16&nbsp;:&nbsp;0&nbsp;to&nbsp;1e400):
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;fgets(line,&nbsp;sizeof(line),&nbsp;stdin);<br />&nbsp;&nbsp;&nbsp;&nbsp;sscanf&nbsp;(line,&nbsp;&quot;%lx&quot;,&endaddress);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;end&nbsp;num&nbsp;is&nbsp;%lx
&quot;,endaddress);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;input&nbsp;indexnumber&nbsp;(hex16&nbsp;:&nbsp;0&nbsp;to&nbsp;ffff):
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;fgets(line,&nbsp;sizeof(line),&nbsp;stdin);<br />&nbsp;&nbsp;&nbsp;&nbsp;sscanf&nbsp;(line,&nbsp;&quot;%lx&quot;,&indexaddress);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;delay&nbsp;num&nbsp;is&nbsp;%lx
&quot;,indexaddress);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;input&nbsp;channelnumber&nbsp;(hex16&nbsp;:&nbsp;0&nbsp;to&nbsp;2):
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;0&nbsp;:&nbsp;32,&nbsp;1&nbsp;:&nbsp;48,2&nbsp;:&nbsp;64&nbsp;:
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;fgets(line,&nbsp;sizeof(line),&nbsp;stdin);<br />&nbsp;&nbsp;&nbsp;&nbsp;sscanf&nbsp;(line,&nbsp;&quot;%lx&quot;,&channelnum);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;delay&nbsp;num&nbsp;is&nbsp;%lx
&quot;,channelnum);<br />///&nbsp;加载dll库<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HINSTANCE&nbsp;hInst;<br />&nbsp;&nbsp;&nbsp;&nbsp;hInst=LoadLibrary(&quot;DllDevelop.dll&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;DmaAdd=(TDMAHEADADD)GetProcAddress(hInst,&quot;Test_PCITIO_IOCTL_DMAHEADADD&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;DmaBytes=(TDMABYTES)GetProcAddress(hInst,&quot;Test_PCITIO_IOCTL_DMABYTES&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;startout1=(PStartout)GetProcAddress(hInst,&quot;startout&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;writesize=(PWriteSize)GetProcAddress(hInst,&quot;writesize&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;writebuf=(PWriteBuf)GetProcAddress(hInst,&quot;writebuf&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Transdata=(PTransData)GetProcAddress(hInst,&quot;Transdata&quot;);<br /><br />&nbsp;&nbsp;&nbsp;//以下为模拟应用程序操作,将文件全部信息,包含头内容<br />//填入缓冲区<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;hFile2&nbsp;=&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(hFile2==NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hFile2&nbsp;=&nbsp;CreateFile(&quot;TIFF26.BMP&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;open&nbsp;MYFILE.TXT&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GENERIC_READ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;open&nbsp;for&nbsp;reading&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;share&nbsp;for&nbsp;reading&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;no&nbsp;security&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN_EXISTING,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;existing&nbsp;file&nbsp;only&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_ATTRIBUTE_NORMAL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;normal&nbsp;file&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;no&nbsp;attr.&nbsp;template&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />//取得文件大小<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;*filelengthhigh=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;filelength=GetFileSize(hFile2,filelengthhigh);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;file&nbsp;length&nbsp;is&nbsp;%ld
&quot;,filelength);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ttfbuf&nbsp;=&nbsp;(BYTE&nbsp;*)&nbsp;malloc(2048*1024);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ttfbuf&nbsp;==&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Failed&nbsp;to&nbsp;allocate&nbsp;buffer&nbsp;for&nbsp;read&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ReadFile(hFile2,ttfbuf,0x3e,&nbsp;&rp,&nbsp;NULL);<br /><br />//&nbsp;需告诉长宽<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&lt=0x3d;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;%x&quot;,ttfbuf);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;kuany&nbsp;=&nbsp;(ttfbuf[0x19]&lt&lt24)+(ttfbuf[0x18]&lt&lt16)+(ttfbuf[0x17]&lt&lt8)+ttfbuf[0x16];<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;
&nbsp;kuan&nbsp;is&nbsp;%ld
&quot;,kuany);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;changx&nbsp;=&nbsp;(ttfbuf[0x15]&lt&lt24)+(ttfbuf[0x14]&lt&lt16)+(ttfbuf[0x13]&lt&lt8)+ttfbuf[0x12];<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;chang&nbsp;is&nbsp;%ld
&quot;,changx);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;writesize(changx,kuany);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;dth=((filelength-0x3e)/(256*1024));<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;dtp=(filelength-0x3e)-(dth*256*1024);<br />&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;fg=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(long&nbsp;dr=0;dr&ltdth;dr++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReadFile(hFile2,ttfbuf,256*1024,&nbsp;&rp,&nbsp;NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(fg=(dr*1024*256);fg&lt((dr+1)*1024*256);fg++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;writebuf(fg,ttfbuf[fg-(dr*1024*256)]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&ltdtp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReadFile(hFile2,ttfbuf,1,&nbsp;&rp,&nbsp;NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;writebuf((fg+i),ttfbuf[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//执行数据转换和发送到PCI卡函数<br />&nbsp;&nbsp;&nbsp;&nbsp;Transdata(channelnum);<br />&nbsp;&nbsp;&nbsp;&nbsp;//转换完成后开始输出<br />&nbsp;&nbsp;&nbsp;&nbsp;startout1(delaynum,startaddress,endaddress,indexaddress,channelnum);<br />&nbsp;&nbsp;//&nbsp;&nbsp;startout(delaynum,startaddress,endaddress,indexaddress,channelnum);<br />&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hFile2);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />希望北京有谁熟悉,因为可以方便调试验证,时间很紧。希望周六就能搞定(做过的人大约1小时搞定)我的电话:010-80752670<br />
foxfox 发表于 2008-6-19 09:21 | 显示全部楼层

怪,1小时1万块,怎么没高手支招呢?

  
icecut 发表于 2008-6-19 19:21 | 显示全部楼层

告诉我同学了。

我不懂c#。应该不难估计是调用接口你对不上,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

338

主题

1056

帖子

21

粉丝
快速回复 在线客服 返回列表 返回顶部