导航:首页 > 器材知识 > 如何编写设备dq文件

如何编写设备dq文件

发布时间:2023-02-21 19:47:04

① 10版GMP中设备DQ如何做

大部分仪器设备都是市售非定制的仪器,厂家一般不会再根据每个人不同的URS去做不同的仪器,厂家都事先按照自己的设计早以将仪器设备设计好了,直接放到市场上销售,所以使用人员再做DQ已没有多大意义,只需检查你买回来的仪器设备是否符合你预定的需求,你所希望的功能及测试范围等是否都能满足的了。

② 设备DQ编制是哪个部门的职责

几大点:设备保养维护 备品的管理 设备日常故障的处理 设备台账的管理 设备故障率的管理 设备评估采购 设备的合理化改善

③ 设备(材料)采购 投标文件分哪几部分

(一)设备、材料采购招标文件的编制
设备招标文件是一种具有法律效力的文件,它是设备采购者对所需采购设备的全部要求,也是投标和评标的主要依据,内容应当做到完整、准确,所提供条件应当公平、合理,符合有关规定。招标文件主要由下列部分组成:
(1)招标书,包括招标单位名称、建设工程名称及简介、招标设备简要内容(设备主要参数、数量、要求交货期等)、投标截止日期和地点、开标日期和地点;
(2)投标须知,包括对招标文件的说明及对投标者和投标文件的基本要求,评标、定标的基本原则等内容;
(3)招标设备清单和技术要求及图.纸;
(4)主要合同条款应当依据合同法的规定,包括价格及付款方式、交货条件、质量验收标准以及违约罚款等内容,条款要详细、严谨,防止事后发生纠纷;
(5)投标书格式、投标设备数量及价目表格式;
(6)其他需要说明的事项。
(二)设备、材料采购投标文件的编制
根据《建设工程设备招标投标管理试行办法》规定,投标需要有投标文件。投标文件是评标的主要依据之一,应当符合招标文件的要求。基本内容包括:
(1)投标书;
(2)投标设备数量及价目表;
(3)偏差说明书,即对招标文件某些要求有不同意见的说明;
(4)证明投标单位资格的有关文件;’
(5)投标企业法人代表授权书;
(6)投标保证金(根据需要定);
(7)招标文件要求的其他需要说明的事项。

投标文件的编制必须严格对应招标文件的投标要求、技术规格要求、质量要求、服务要求、资格要求等各种要求,力求充分展示自己,适当的时候还需注意标书的后期制作。
投标文件中除包括投标函、报价表、企业情况简介、拟响应的合同条款、各种资格证明文件外,还应包括以下内容:
1、技术规格要求及付款方式、交货时间响应表

2、设计图纸
图纸必须按招标文件的具体技术规格要求,以一定的比例、一定的深度来设计绘制,同时图纸的技术规格要求必须与投标所提供的实物相一致。

3、货物主要用材、部件价格明细表及其证明材料货物用材必须与设计图纸相一致,并将在实物评价时得到验证;同时材料价格、产地必须真实、可靠,应与投标文件中的货物报价相吻合。

4、货物的生产工艺流程及所用材料说明
该部分内容应与前面图纸及用材情况相对应,以便于评委会评价投标人拟采用的生产工艺的先进性和合理性。此外,还可作为采购人在货物生产过程中随机对照检查的依据。

5、企业主要设备明细表(并应注明设备用途)
该部分必须与生产工艺流程中所涉及的设备相配套。这样既可以因此反映出上述工艺流程中所涉及的生产设备是否真实存在,同时也可以为前面所述的工艺流程的可行性提供物质保证。

6、质量保证体系
根据投标人提供的目前所具有的组织管理体系、检测体系(含质量验收标准、制度、质量管理及检测方面的硬件)、管理制度及技术人员资质水平,从侧面可以体现出该投标人的企业内部管理意识和管理水平,以作为该投标人对投标货物质量承诺、保证的辅证。

7、服务承诺(一般不得低于采购人的基本服务要求)及售后服务机构、人员的情况介绍等
8、其他投标人认为需提供的材料。

④ 在虚拟机linux操作系统上怎么编写一个简单的字符设备驱动程序

下载 virtualbox 下载一个 linux iso
用virtualbox 建立虚拟系统 配置好 加载iso 启动安装
VMware安装完毕后,利用它可以建立多个虚拟机,每新建一个虚拟机,就会要求你建立一个配置文件。这个配置文件实际上相当于新电脑的“硬件配置”,你可以在配置文件中决定虚拟机的硬盘如何配置,内存多大.准备运行哪种操作系统,是否有网络等。配置Linux虚拟机的步骤如下。

(1)选择File菜单下的“New Virtual Machine”出现新虚拟机向导后单击“下一步”,选择“Typical”典型安装。

(2)再单击“下一步”,在选择操作系统界面的“Guest Operation System”中选择 “Linux”,然后单击Version对应的下拉菜单选择具体的Linux版本, 此处我们选择“Red Hat LinuX”。

(3)单击“下一步”进入安装目录选择界面。该界面上面的文本框是系统的名字,保持默认值即可,下面的文本框需要选择虚拟机操作系统的安装位置。

(4)根据需要选择好后,单击“下一步”按钮,出现设置虚拟机内存大小的界面。Linux9.O对内存的要求是:文本模式至少需要64MB;图形化模式至少需要128MB,推荐使用192MB。此处我们选择192MB:

(5)单击“下一步”按钮进入网络连接方式选择界面。VMware有四种网络设置方式,一般来说,Bridged方式使虚拟机就像网络内一台独立的计算机一样,最为方便好用(四种连网方式的区别大家可参考VMware的有关资料)。在此、我们选择Brided方式。

(6)单击“下一步”按钮进入虚拟磁盘的设置界面。 这里有三种方式(Create a new virtual disk、Use an existing virtual disk、Use a physical disk)可供选择、建议初学者选择“Create a new Virtual disk”,其含义是新建一个虚拟磁盘,该虚拟磁盘只是主机—卜的一个独立文件。

(7)在“下一步”中设置磁盘大小。在此、我们采用默认的4GB。

(8)单击“下一步”进入文件存放路径选择界面。

在此界面可单击Browse按钮进行设置。此处我们使用默认值,单击“完成”按钮。

至此,完成一个虚拟机的配置。

⑤ 汇编中dq类型的变量要放在.data段中

在 Visual C++ 中使用内联汇编- -

使用内联汇编可以在 C/C++ 代码中嵌入汇编语言指令,而且不需要额外的汇编和连接步骤。在 Visual C++ 中,内联汇编是内置的编译器,因此不需要配置诸如 MASM 一类的独立汇编工具。这里,我们就以 Visual Studio .NET 2003 为背景,介绍在 Visual C++ 中使用内联汇的相关知识(如果是早期的版本,可能会有些许出入)。

内联汇编代码可以使用 C/C++ 变量和函数,因此它能非常容易地整合到 C/C++ 代码中。它能做一些对于单独使用 C/C++ 来说非常笨重或不可能完成的任务。

一、 优点
使用内联汇编可以在 C/C++ 代码中嵌入汇编语言指令,而且不需要额外的汇编和连接步骤。在 Visual C++ 中,内联汇编是内置的编译器,因此不需要配置诸如 MASM 一类的独立汇编工具。这里,我们就以 Visual Studio .NET 2003 为背景,介绍在 Visual C++ 中使用内联汇的相关知识(如果是早期的版本,可能会有些许出入)。

内联汇编代码可以使用 C/C++ 变量和函数,因此它能非常容易地整合到 C/C++ 代码中。它能做一些对于单独使用 C/C++ 来说非常笨重或不可能完成的任务。

内联汇编的用途包括:

使用汇编语言编写特定的函数;
编写对速度要求非常较高的代码;
在设备驱动程序中直接访问硬件;
编写 naked 函数的初始化和结束代码。

二、 关键字

使用内联汇编要用到 __asm 关键字,它可以出现在任何允许 C/C++ 语句出现的地方。我们来看一些例子:

简单的 __asm 块:
__asm
{
MOV AL, 2
MOV DX, 0xD007
OUT AL, DX
}

在每条汇编指令之前加 __asm 关键字:
__asm MOV AL, 2
__asm MOV DX, 0xD007
__asm OUT AL, DX

因为 __asm 关键字是语句分隔符,所以可以把多条汇编指令放在同一行:
__asm MOV AL, 2 __asm MOV DX, 0xD007 __asm OUT AL, DX

显然,第一种方法与 C/C++ 的风格很一致,并且把汇编代码和 C/C++ 代码清楚地分开,还避免了重复输入 __asm 关键字,因此推荐使用第一种方法。

不像在 C/C++ 中的"",__asm 块的""不会影响 C/C++ 变量的作用范围。同时,__asm 块可以嵌套,而且嵌套也不会影响变量的作用范围。

为了与低版本的 Visual C++ 兼容,_asm 和 __asm 具有相同的意义。另外,Visual C++ 支持标准 C++ 的 asm 关键字,但是它不会生成任何指令,它的作用仅限于使编译器不会出现编译错误。要使用内联汇编,必须使用 __asm 而不是 asm 关键字。

三、 汇编语言

1. 指令集

内联汇编支持 Intel Pentium 4 和 AMD Athlon 的所有指令。更多其它处理器的指令可以通过 _EMIT 伪指令来创建(_EMIT 伪指令说明见下文)。

2. MASM 表达式

在内联汇编代码中,可以使用所有的 MASM 表达式(MASM 表达式是指用来计算一个数值或一个地址的操作符和操作数的组合)。

3. 数据指示符和操作符

虽然 __asm 块中允许使用 C/C++ 的数据类型和对象,但它不能使用 MASM 指示符和操作符来定义数据对象。这里特别指出,__asm 块中不允许 MASM 中的定义指示符(DB、DW、DD、DQ、DT 和 DF),也不允许使用 DUP 和 THIS 操作符。MASM 中的结构和记录也不再有效,内联汇编不接受 STRUC、RECORD、WIDTH 或者 MASK。

4. EVEN 和 ALIGN 指示符

尽管内联汇编不支持大多数 MASM 指示符,但它支持 EVEN 和 ALIGN。当需要的时候,这些指示符在汇编代码里面加入 NOP 指令(空操作)使标号对齐到特定边界。这样可以使某些处理器取指令时具有更高的效率。

5. MASM 宏指示符

内联汇编不是宏汇编,不能使用 MASM 宏指示符(MACRO、REPT、IRC、IRP 和 ENDM)和宏操作符(<>、!、&、% 和 .TYPE)。

6. 段

必须使用寄存器而不是名称来指明段(段名称"_TEXT"是无效的)。并且,段跨越必须显式地说明,如 ES:[EBX]。

7. 类型和变量大小

在内联汇编中,可以用 LENGTH、SIZE 和 TYPE 来获取 C/C++ 变量和类型的大大小。
* LENGTH 操作符用来取得 C/C++ 中数组的元素个数(如果不是一个数组,则结果为 1)。
* SIZE 操作符可以获取 C/C++ 变量的大小(一个变量的大小是 LENGTH 和 TYPE 的乘积)。
* TYPE 操作符可以返回 C/C++ 类型和变量的大小(如果变量是一个数组,它得到的是数组中单个元素的大小)。

例如,程序中定义了一个 8 维的整数型变量:

int iArray[8];

下面是 C 和汇编表达式中得到的 iArray 及其元素的相关值:

__asm C Size

LENGTH iArray sizeof(iArray)/sizeof(iArray[0]) 8
SIZE iArray sizeof(iArray) 32
TYPE iArray sizeof(iArray[0]) 4

8. 注释

内联汇编中可以使用汇编语言的注释,即";"。例如:

__asm MOV EAX, OFFSET pbBuff ; Load address of pbBuff

因为 C/C++ 宏将会展开到一个逻辑行中,为了避免在宏中使用汇编语言注释带来的混乱,内联汇编也允许使用 C/C++ 风格的注释。

9. _EMIT 伪指令

_EMIT 伪指令相当于 MASM 中的 DB,但是 _EMIT 一次只能在当前代码段(.text 段)中定义一个字节。例如:

__asm
{
JMP _CodeLabel

_EMIT 0x00 ; 定义混合在代码段的数据
_EMIT 0x01

_CodeLabel: ; 这里是代码
_EMIT 0x90 ; NOP指令
}

10. 寄存器使用

一般来说,不能假定某个寄存器在 __asm 块开始的时候有已知的值。寄存器的值将不能保证会从 __asm 块保留到另外一个 __asm 块中。

如果一个函数声明为 __fastcall 调用方式,则其参数将通过寄存器而不是堆栈来传递。这将会使 __asm 块产生问题,因为函数无法被告知哪个参数在哪个寄存器中。如果函数接收了 EAX 中的参数并立即储存一个值到 EAX 中的话,原来的参数将丢失掉。另外,在所有声明为 __fastcall 的函数中,ECX 寄存器是必须一直保留的。为了避免以上的冲突,包含 __asm 块的函数不要声明为 __fastcall 调用方式。

提示:如果使用 EAX、EBX、ECX、EDX、ESI 和 EDI 寄存器,你不需要保存它。但如果你用到了 DS、SS、SP、BP 和标志寄存器,那就应该用 PUSH 保存这些寄存器。
提示:如果程序中改变了用于 STD 和 CLD 的方向标志,必须将其恢复到原来的值。

四、 使用 C/C++ 元素

1. 可用的 C/C++ 元素

C/C++ 与汇编语言可以混合使用,在内联汇编中可以使用 C/C++ 变量以及很多其它的 C/C++ 元素,包括:

符号,包括标号、变量和函数名;
常量,包括符号常量和枚举型成员;
宏定义和预处理指示符;
注释,包括"/**/"和"//";
类型名,包括所有 MASM 中合法的类型;
typedef 名称,通常使用 PTR 和 TYPE 操作符,或者使用指定的的结构或枚举成员。
在内联汇编中,可以使用 C/C++ 或汇编语言的基数计数法。例如,0x100 和 100H 是相等的。

2. 操作符使用

内联汇编中不能使用诸如"<<"一类的 C/C++ 操作符。但是,C/C++ 和 MASM 共有的操作符(比如"*"和"[]"操作符),都被认为是汇编语言的操作符,是可以使用的。举个例子:

int iArray[10];

__asm MOV iArray[6], BX ; Store BX at iArray + 6 (Not scaled)
iArray[6] = 0; // Store 0 at iArray+12 (Scaled)

提示:在内联汇编中,可以使用 TYPE 操作符使其与 C/C++ 一致。比如,下面两条语句是一样的:
__asm MOV iArray[6 * TYPE int], 0 ; Store 0 at iArray + 12
iArray[6] = 0; // Store 0 at iArray + 12

3. C/C++ 符号使用

在 __asm 块中可以引用所有在作用范围内的 C/C++ 符号,包括变量名称、函数名称和标号。但是不能访问 C++ 类的成员函数。

下面是在内联汇编中使用 C/C++ 符号的一些限制:

每条汇编语句只能包含一个 C/C++ 符号。在一条汇编指令中,多个符号只能出现在 LENGTH、TYPE 或 SIZE 表达式中。
在 __asm 块中引用函数必须先声明。否则,编译器将不能区别 __asm 块中的函数名和标号。
在 __asm 块中不能使用对于 MASM 来说是保留字的 C/C++ 符号(不区分大小写)。MASM 保留字包含指令名称(如 PUSH)和寄存器名称(如 ESI)等。
在 __asm 块中不能识别结构和联合标签。
4. 访问 C/C++ 中的数据

内联汇编的一个非常大的方便之处是它可以使用名称来引用 C/C++ 变量。例如,如果 C/C++ 变量 iVar 在作用范围内:

__asm MOV EAX, iVar ; Stores the value of iVar in EAX

如果 C/C++ 中的类、结构或者枚举成员具有唯一的名称,则在 __asm 块中可以只通过成员名称来访问(省略"."操作符之前的变量名或 typedef 名称)。然而,如果成员不是唯一的,你必须在"."操作符之前加上变量名或 typedef 名称。例如,下面的两个结构都具有 SameName 这个成员变量:

struct FIRST_TYPE
{
char *pszWeasel;
int SameName;
};

struct SECOND_TYPE
{
int iWonton;
long SameName;
};

如果按下面方式声明变量:

struct FIRST_TYPE ftTest;
struct SECOND_TYPE stTemp;

那么,所有引用 SameName 成员的地方都必须使用变量名,因为 SameName 不是唯一的。另外,由于上面的 pszWeasel 变量具有唯一的名称,你可以仅仅使用它的成员名称来引用它:

__asm
{
MOV EBX, OFFSET ftTest
MOV ECX, [EBX]ftTest.SameName ; 必须使用"ftTest"
MOV ESI, [EBX]. pszWeasel ; 可以省略"ftTest"
}

提示:省略变量名仅仅是为了书写代码方便,生成的汇编指令还是一样的。
5. 用内联汇编写函数

如果用内联汇编写函数的话,要传递参数和返回一个值都是非常容易的。看下面的例子,比较一下用独立汇编和内联汇编写的函数:

; PowerAsm.asm
; Compute the power of an integer

PUBLIC GetPowerAsm
_TEXT SEGMENT WORD PUBLIC 'CODE'
GetPowerAsm PROC
PUSH EBP ; Save EBP
MOV EBP, ESP ; Move ESP into EBP so we can refer
; to arguments on the stack
MOV EAX, [EBP+4] ; Get first argument
MOV ECX, [EBP+6] ; Get second argument
SHL EAX, CL ; EAX = EAX * (2 ^ CL)
POP EBP ; Restore EBP
RET ; Return with sum in EAX
GetPowerAsm ENDP
_TEXT ENDS
END

C/C++ 函数一般用堆栈来传递参数,所以上面的函数中需要通过堆栈位置来访问它的参数(在 MASM 或其它一些汇编工具中,也允许通过名称来访问堆栈参数和局部堆栈变量)。

下面的程序是使用内联汇编写的:

// PowerC.c

#include

int GetPowerC(int iNum, int iPower);

int main()
{
printf("3 times 2 to the power of 5 is %d\n", GetPowerC( 3, 5));
}

int GetPowerC(int iNum, int iPower)
{
__asm
{
MOV EAX, iNum ; Get first argument
MOV ECX, iPower ; Get second argument
SHL EAX, CL ; EAX = EAX * (2 to the power of CL)
}
// Return with result in EAX
}

使用内联汇编写的 GetPowerC 函数可以通过参数名称来引用它的参数。由于 GetPowerC 函数没有执行 C 的 return 语句,所以编译器会给出一个警告信息,我们可以通过 #pragma warning 禁止生成这个警告。

内联汇编的其中一个用途是编写 naked 函数的初始化和结束代码。对于一般的函数,编译器会自动帮我们生成函数的初始化(构建参数指针和分配局部变量等)和结束代码(平衡堆栈和返回一个值等)。使用内联汇编,我们可以自己编写干干净净的函数。当然,此时我们必须自己动手做一些有关函数初始化和扫尾的工作。例如:

void __declspec(naked) MyNakedFunction()
{
// Naked functions must provide their own prolog.
__asm
{
PUSH EBP
MOV ESP, EBP
SUB ESP, __LOCAL_SIZE
}

.
.
.

// And we must provide epilog.
__asm
{
POP EBP
RET
}
}

6. 调用 C/C++ 函数

内联汇编中调用声明为 __cdecl 方式(默认)的 C/C++ 函数必须由调用者清除参数堆栈,下面是一个调用 C/C++ 函数例子:

#include

char szFormat[] = "%s %s\n";
char szHello[] = "Hello";
char szWorld[] = " world";

void main()
{
__asm
{
MOV EAX, OFFSET szWorld
PUSH EAX
MOV EAX, OFFSET szHello
PUSH EAX
MOV EAX, OFFSET szFormat
PUSH EAX
CALL printf

// 压入了 3 个参数在堆栈中,调用函数之后要调整堆栈
ADD ESP, 12
}
}

提示:参数是按从右往左的顺序压入堆栈的。
如果调用 __stdcall 方式的函数,则不需要自己清除堆栈。因为这种函数的返回指令是 RET n,会自动清除堆栈。大多数 Windows API 函数均为 __stdcall 调用方式(仅除 wsprintf 等几个之外),下面是一个调用 MessageBox 函数的例子:

#include

TCHAR g_tszAppName[] = TEXT("API Test");

void main()
{
TCHAR tszHello[] = TEXT("Hello, world!");

__asm
{
PUSH MB_OK OR MB_ICONINFORMATION
PUSH OFFSET g_tszAppName ; 全局变量用 OFFSET
LEA EAX, tszHello ; 局部变量用 LEA
PUSH EAX
PUSH 0
CALL DWORD PTR [MessageBox] ; 注意这里不是 CALL MessageBox,而是调用重定位过的函数地址
}
}

提示:可以不受限制地访问 C++ 成员变量,但是不能访问 C++ 的成员函数。
7. 定义 __asm 块为 C/C++ 宏

使用 C/C++ 宏可以方便地把汇编代码插入到源代码中。但是这其中需要额外地注意,因为宏将会扩展到一个逻辑行中。
为了不会出现问题,请按以下规则编写宏:

使用花括号把 __asm 块包围住;
把 __asm 关键字放在每条汇编指令之前;
使用经典 C 风格的注释("/* comment */"),不要使用汇编风格的注释("; comment")或单行的 C/C++ 注释("// comment");
举个例子,下面定义了一个简单的宏:

#define PORTIO __asm \
/* Port output */ \
{ \
__asm MOV AL, 2 \
__asm MOV DX, 0xD007 \
__asm OUT DX, AL \
}

乍一看来,后面的三个 __asm 关键字好像是多余的。其实它们是需要的,因为宏将被扩展到一个单行中:

__asm /* Port output */

从扩展后的代码中可以看出,第三个和第四个 __asm 关键字是必须的(作为语句分隔符)。在 __asm 块中,只有 __asm 关键字和换行符会被认为是语句分隔符,又因为定义为宏的一个语句块会被认为是一个逻辑行,所以必须在每条指令之前使用 __asm 关键字。

括号也是需要的,如果省略了它,编译器将不知道汇编代码在哪里结束,__asm 块后面的 C/C++ 语句看起来会被认为是汇编指令。

同样是由于宏展开的原因,汇编风格的注释("; comment")和单行的 C/C++ 注释("// commen")也可能会出现错误。为了避免这些错误,在定义 __asm 块为宏时请使用经典 C 风格的注释("/* comment */")。

和 C/C++ 宏一样 __asm 块写的宏也可以拥有参数。和 C/C++ 宏不一样的是,__asm 宏不能返回一个值,因此,不能使用这种宏作为 C/C++ 表达式。

不要不加选择地调用这种类型的宏。比如,在声明为 __fastcall 的函数中调用汇编语言宏可能会导致不可预料的结果(请参看前文的说明)。

8. 转跳

可以在 C/C++ 里面使用 goto 转跳到 __asm 块中的标号处,也可以在 __asm 块中转跳到 __asm 块里面或外面的标号处。__asm 块内的标号是不区分大小写的(指令、指示符等也是不区分大小写的)。例如:

void MyFunction()
{
goto C_Dest; /* 正确 */
goto c_dest; /* 错误 */

goto A_Dest; /* 正确 */
goto a_dest; /* 正确 */

__asm
{
JMP C_Dest ; 正确
JMP c_dest ; 错误

JMP A_Dest ; 正确
JMP a_dest ; 正确

a_dest: ; __asm 标号
}

C_Dest: /* C/C++ 标号 */
return;
}

不要使用函数名称当作标号,否则将转跳到函数中执行,而不是标号处。例如,由于 exit 是 C/C++ 的函数,下面的转跳将不会到 exit 标号处:

; 错误:使用函数名作为标号
JNE exit
.
.
.
exit:
.
.
.

美元符号"$"用于指定当前指令位置,常用于条件跳转中,例如:

JNE $+5 ; 下面这条指令的长度是 5 个字节
JMP _Label
NOP ; $+5,转跳到了这里
.
.
.
_Label:
.
.
.

五、在 Visual C++ 工程中使用独立汇编

内联汇编代码不易于移植,如果你的程序打算在不同类型的机器(比如 x86 和 Alpha)上运行,你可能需要在不同的模块中使用特定的机器代码。这时候你可以使用 MASM(Microsoft Macro Assembler),因为 MASM 支持更多方便的宏指令和数据指示符。

这里简单介绍一下在 Visual Studio .NET 2003 中调用 MASM 编译独立汇编文件的步骤。

在 Visual C++ 工程中,添加按 MASM 的要求编写的 .asm 文件。在解决方案资源管理器中,右击这个文件,选择"属性"菜单项,在属性对话框中,点击"自定义生成步骤",设置如下项目:

命令行:ML.exe /nologo /c /coff "-Fo$(IntDir)\$(InputName).obj" "$(InputPath)"
输出:$(IntDir)\$(InputName).obj

如果要生成调试信息,可以在命令行中加入"/Zi"参数,还可以根据需要生成 .lst 和 .sbr 文件。

如果要在汇编文件中调用 Windows API,可以从网上下载 MASM32 包(包含了 MASM 汇编工具、非常完整的 Windows API 头文件/库文件、实用宏以及大量的 Win32 汇编例子等)。相应地,应该在命令行中加入"/I X:\MASM32\INCLUDE"参数指定 Windows API 汇编头文件(.inc)的路径。MASM32 的主页是:,里面可以下载最新版本的 MASM32 包。

⑥ 请问设备招标技术文件是由谁编写业主委托招标代理或专业人员还是有承担设计任务的设计院编写请指教!

招标代理工作人员编制。

招标文件是由招标代理工作人员编制的,招标人有义务提供基本的技术资料,但编制成稿的工作是招标代理工作人员完成的,这点毫无疑义。

涉及设备参数、规格型号、功能等专业内容,建筑工程的项目一般可以从设计图纸中找到约束性条件作为招标文件的技术要求,由设备投标人根据自己投标产品特征填报,由专家评审出最符合工程需要的设备。

带有设计内容的设备标,一般是大型成套设备生产线之类的标的,这种标可以进行多阶段招标,由具有丰富经验的投标人提供设计方案(当然,投标人的设计方案都是根据自己的设备量身定做的,不具备普遍适应性),这时,评标委员会评审的重心实际上是设计方案和技术经济指标。

单纯的设备标不存在这种疑惑,一定是知道自己需要什么样的设备才能进入招标环节的。

⑦ 净化工程验收dq,fat,sat,iq,oq,pq文件怎么填写

URS: user requirement specification 用户需求规格书
FAT: Factory Acceptance Test
SAT: Site Acceptance Test
DQ: Design Qualification 设计确认

IQ: Installation Qualification 安装确认
OQ: Operation Qualification 操作(运行)确认
PQ: Performance Qualification 性能确认
SOP: Standard operation procere 标准作业程序

⑧ 如何编写驱动程序

代码:

#include&lt;linux/mole.h&gt;

#include&lt;linux/kernel.h&gt;

#include&lt;asm/io.h&gt;

#include&lt;linux/miscdevice.h&gt;

#include&lt;linux/fs.h&gt;

#include&lt;asm/uaccess.h&gt;

//流水灯代码

#define GPM4CON 0x110002e0

#define GPM4DAT 0x110002e4

static unsigned long*ledcon=NULL;

static unsigned long*leddat=NULL;

//自定义write文件操作(不自定义的话,内核有默认的一套文件操作函数)

static ssize_t test_write(struct file*filp,const char __user*buff,size_t count,loff_t*offset)

{

int value=0;

int ret=0;

ret=_from_user(&value,buff,4);

//底层驱动只定义基本操作动作,不定义功能

if(value==1)

{

*leddat|=0x0f;

*leddat&=0xfe;

}

if(value==2)

{

*leddat|=0x0f;

*leddat&=0xfd;

}

if(value==3)

{

*leddat|=0x0f;

*leddat&=0xfb;

}

if(value==4)

{

*leddat|=0x0f;

*leddat&=0xf7;

}

return 0;

}

//文件操作结构体初始化

static struct file_operations g_tfops={

.owner=THIS_MODULE,

.write=test_write,

};

//杂设备信息结构体初始化

static struct miscdevice g_tmisc={

.minor=MISC_DYNAMIC_MINOR,

.name="test_led",

.fops=&g_tfops,

};

//驱动入口函数杂设备初始化

static int __init test_misc_init(void)

{

//IO地址空间映射到内核的虚拟地址空间

ledcon=ioremap(GPM4CON,4);

leddat=ioremap(GPM4DAT,4);

//初始化led

*ledcon&=0xffff0000;

*ledcon|=0x00001111;

*leddat|=0x0f;

//杂设备注册函数

misc_register(&g_tmisc);

return 0;

}

//驱动出口函数

static void __exit test_misc_exit(void)

{

//释放地址映射

iounmap(ledcon);

iounmap(leddat);

}

//指定模块的出入口函数

mole_init(test_misc_init);

mole_exit(test_misc_exit);

MODULE_LICENSE("GPL");

(8)如何编写设备dq文件扩展阅读:

include用法:

#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

插入头文件的内容

#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:

1、#include&lt;文件名&gt;

2、#include"文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:

#include&lt;math.h&gt;//一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。

采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:

#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏

你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。

【例1】在#include命令中的宏

#ifdef _DEBUG_

#define MY_HEADER"myProject_dbg.h"

#else

#define MY_HEADER"myProject.h"

#endif

#include MY_HEADER

当上述程序代码进入预处理时,如果_DEBUG_宏已被定义,那么预处理器会插入myProject_dbg.h的内容;如果还没定义,则插入myProject.h的内容。

⑨ 怎么填写仪器设备技术档案

一个单位的档案应该首先从分类开始,档案的整理就是不断地分类和编号。单位整理档案应该从当地的国家档案馆购买,而不应该从什么计量协会购买。所有单位的档案均需使用有各级各类的国家档案馆监制的档案用品,如档案盒、档案袋、档案目录(如:设备档案文件目录、设备档案案卷目录、科技档案分类目录、设备档案总目录等),没有听说过什么“档案簿”。

以下是设备档案分类、组卷的整理要点,分别叙述如下:

一、单位所有档案的分类
首先应该编写一个单位档案的分类标准。即你们单位的档案分为几个一级大类几个二级类别和三、四级类别。如一级类档案,可以分为文书类档案(指单位日常工作产生的文字性档案)、科技类档案、财会类档案、声像类档案等。科技类档案的二级类里,可以分为设备仪器类档案、科研课题档案、产品类档案、基建工程档案。设备仪器类档案的三级类里可以按设备使用性质分类。如计算机(台式机、笔记本、上网本)、办公设备(会议桌、办公桌、书柜、档案柜、办公座椅等)等等
一般来说,三级或四级类就可以组成卷了。

二、设备档案分类方法(可以选择适合你们单位的一种进行分类)
1. “使用性质——型号”分类法
2. “工序——型号”分类法
3. “车间——使用性质”分类法
4. “使用性质”分类法
5. 不分类直接组卷

三、组卷要求
(一)组卷的含义:组卷,就是把一组有联系的文件,以卷、册、袋、盒等形式组合在一起,使它能够表达一个相对独立的概念,以便于保管、保密和利用。
(二)组卷具体要求
1. 一卷就是一组有密切联系的文件,而不是杂乱无章地随意堆积。
2. 每一卷都表达一个相对独立的概念,不要一个概念(案卷标题)多个卷,卷与卷之间应当从题名到内容都是全异的关系。
3. 卷厚适度。一般不超过40mm。
4. 案卷内不应有重份文件。
5. 价值(保管期限)大体相同。设备档案的保管期限一般为长期或定期。要根据设备仪器的使用寿命来定。

四、设备档案组卷方法
(1)大型设备按结构组卷:即按设备的组件、部件、零件等不同可分拆的组成部分组卷。
(2)普通设备仪器按单台组卷:即1台1卷。
(3)小型设备仪器可酌情合并组卷:即2—3台组1卷。

五、卷内文件排列
(一)概念
卷内文件排列,就是按照文件的形成规律和必然联系,系统的、有规则的进行排放,固定每份文件在卷内的恰当位置。
(二)设备文件排列方法
设备仪器档案的组卷:按依据性材料、设备开箱验收、设备安装调试、设备运行维修、随机图样或图纸、说明书等。随机图样如果是大张的图纸,可以单独组卷。
(三)卷内文字材料可参考文书档案排列:
1. 整体上按时间(工作程序进度)。
2. 正文在前、底稿在后。
3. 正文在前、附件在后。
4. 批复在前、请示在后。
5. 原件在前、复印件在后。
6. 装订成本、印刷成册的材料一般不用拆散重新排列。

六、设备档案标题拟写方法
型号+设备仪器名称+文件名称

例:XX型B超仪订货合同、合格证、说明书、开箱单
型号 名称 文件名称

七、卷内文件目录填写

序号 文件编号 责任者 文件材料题名 日期 页号 备注
1 SB-1 XX科 XX型B超仪订货合同 20140506 1
(SB是设备的首字母)(这里不能画出线段,所以只写出文字)
1. 序号:即顺序号。序号的给定是以一份文件或一张图纸为单位。
(1)其中打印件与底稿,主件与附件,原件与复印件均为一份文件,给一个顺序号。
(2)请示与批复视为2份文件,各编各的号(若批复不另行文,只在原请示件上批示意见的,仍做为一份文件,编一个号,但需要在题名填写时体现出批示)。
2. 文件编号
(1)文件编号:如,请示、批复,文件编号填写发文号。
(2)图纸编号:填图号,例“建施-1”,“结施01”“水施03” ,。
(3)许可证:填证号。
3. 责任者:
(1)以落款盖章或签名为准,填写文件的直接形成单位和个人;
(2)有两个以上责任者时,尽量都填上,太多时,选择两个主要责任者,其余用“等”代替。
(3)竣工图的责任者填写竣工图章上的施工单位。
(4)责任者可填写规范通用的简称。
4. 文件材料题名:即文件标题或图纸的全称。
5. 日期:文件或图纸的形成日期。格式为20020612(8位数)。
6. 页号:填每份文件的首尾号。
说明:(1)图纸有图样目录时,仍要编制《卷内文件目录》,原图纸目录要作为卷内一份文件编页号登入目录;若该套图纸需要组成几卷,图纸目录放在第一卷内。
(2)卷内文件目录排在卷内文件首页之前。
八、填写卷内备考表
(一)说明
包括以下内容:
1、标明卷内文件的件数与页数;
2、说明卷内文件残缺破损情况(无者不写);
3、填写立卷人、检查人姓名及日期,日期为立卷的完成时间。
(二)互见号
填写反映同一内容而载体不同另行保管的档案的档号,该档号后应注明载体形式并用括号括起。
九、填写案卷封面
1.档号:后面讲。
2.档案馆号:不填。
3.案卷题名:填写已拟写好的案卷题名。
4.立卷单位:哪个单位组卷就填哪个单位
5.起止日期:填写卷内文件形成的起止日期,只填年、月。
6.保管期限:①填写划定的永久、长期、短期;②卷内档案材料有两种以上保管期限时,应从长划定。
7.密级:根据已划定的密级填、没有则不填,特殊情况请示有关领导再填。

十、案卷装订
(一)拆掉金属物。
(二)科技档案可采用装订和不装订两种形式。
1. 装订方法:
(1)用棉线三孔一线(8字装订法)
(2)图纸折叠。
①按A4图纸大小折叠成手风琴式;
②内的图纸左侧要留出装订边30mm;
②折叠图纸时注意正面朝内,图签外露,以保护图纸免受磨损并便于查看利用。
(3)图纸装订要加垫纸板并包脊背。
2. 装订(不装订):
(1)卷内文字材料,要以份(件)为单位,用线装订。
(2)卷内图纸要折叠成手风琴式A4大小的统一幅面,不留装订边。
(3)卷内的每一件文字材料和每一张图纸,均在右上角空白处加盖档号章,式样为:

档 号 序 号
SB3-1 1-001
(这里不能画出线段,所以只写出文字)
3、对破损、小于A4规格的文字材料要修复与托裱,装订线外有字迹的要加边。

十一、编制检案工具
科技档案常用的是《科技档案分类目录》、《总目录》。
(一)《科技档案分类目录》式样如下:

序号 档号 案卷标题 立卷单位 日期 期限 张(页)数 备注
XX SB3-1 计算机类档案 设备处 20140506 短期 150
(这里不能画出线段,所以只写出文字)
(二)《档案总目录》
1. 打破大类中二级类目及以下类目(即小类)的类别界限,以归档时间的先后作为登记入册的前后顺序。
2. 以打破年度的大流水号为登记的顺序号。
谢谢采纳为满意答案。

阅读全文

与如何编写设备dq文件相关的资料

热点内容
途观l液晶仪表油量怎么看 浏览:119
设备购买项目预期效益怎么写 浏览:961
施工现场主要设备是哪些内容 浏览:4
年产9万吨环氧乙烷装置设计 浏览:877
仪表盘10码是多少公里 浏览:958
想买机床去什么网站好 浏览:380
设备开出率如何计算 浏览:250
机械运输费计入什么科目 浏览:425
仪器仪表火灾用什么扑灭 浏览:346
压铸铸造面积怎么计算 浏览:8
简述自锁装置的作用 浏览:976
消防主机没有设备类型怎么 浏览:50
链条式电动工具论文 浏览:520
电脑上怎么下载疯狂机械手 浏览:79
自来水主管道阀门怎么更换 浏览:248
生产水设备一套多少钱 浏览:824
怎么在电脑上阻止其他设备偷网 浏览:991
青岛五金机电批发市场在哪里 浏览:413
深圳市精能达五金制品有限公司 浏览:897
迷你世界放工具箱 浏览:624