【转】DICOM简述!!!!

转自:DICOM简述 - 简书

视频教程:https://www.bilibili.com/video/av66144772

  • DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052)。它定义了质量能满足临床需要的可用于数据交换的医学图像格式。
  • https://www.dicomstandard.org/

一.Dicom文件的主要结构

  • 主要包括文件头和像素数据两部分,文件头包括文件引言(Meta Information)和数据集(Data set)

 

1.数据元素的组成规则

  • Tag:信息的唯一性编码,两个十六进制的数的组合(Group, Element)
    * group的数值是偶数,代表是标准数据字典
    * group的数值是奇数,代表是自定义的私有数据字典
  • VR(Value Representations):DICOM定义得的数据类型
  • Value Length(数据长度):所有的数据元素都应该为偶数长度,若为奇数,需要加空格或空。
    * 奇数长度的字符串加空格
    * 奇数长度的数字加空NULL
  • Value Field:数据值,长度必须是偶数

2.文件引言MetaInfo:标识一些常用信息,存储在0x0002Group里

GroupElementTag Description中文解释VRVM
00020000File Meta Information Group LengthMeta Info的长度UL1180
00020001File Meta Information VersionMeta Info的版本OB1
00020002Media Storage SOP Class UIDSOP Class UID 同Data Set里的SOP class UIDUI1
00020003Media Storage SOP Instance UIDSOP Instance UID 同Data Set里的SOP Instance UIDUI1算出
00020010Transfer Syntax UIDDataSet的编码方式UI1
00020012Implementation Class UIDImplementation Class UIDUI1实现类库决定
00020013Implementation Version NameImplementation版本名SH1
00020016Source Application Entity​ Title​最后一个编辑该文件的实体AE1
00020017Sending Application​ Entity Title网络上发送该文件的实体AE1
00020018Receiving Application​ Entity Title​网络上接收该文件的实体AE1
00020100Private Information​ Creator UID私有信息的Creator的UIDUI1
00020102Private InformationMeta里面的私有信息OB1


 

3.数据集DataSet:医学图像的相关的信息

Patient:病人信息,键值为Patient ID(0010, 0020)

GroupElementTag Description中文解释VR
00100010Patient’s Name患者姓名PN
00100020Patient ID患者IDLO
00100030Patient’s Birth Date患者出生日期DA
00100032Patient’s Birth Time患者出生时间TM
00100040Patient’s Sex患者性别CS
00101001OtherPatientNames患者其他姓名PN
00101030Patient’s Weight患者体重DS
001021C0Pregnancy Status怀孕状态US
00104000Patient’s Comments患者注解LT

Study:检查信息,键值为Study Instance UID(0020, 000D)

GroupElementTag Description中文解释VR
00080050Accession Number:A RIS generated number that identifies the order for the Study.检查号: RIS的生成序号,用以标识做检查的次序.SH
00200010Study ID检查ID.SH
0020000DStudy Instance UID:Unique identifier for the Study.检查实例号: 唯一标记不同检查的号码.UI
00080020Study Date:Date the Study started.检查日期: 检查开始的日期.DA
00080030Study Time:Time the Study started.检查时间: 检查开始的时间.TM
00080061Modalities in Study一个检查中含有的不同检查类型.CS
00080015Body Part Examined检查的部位.CS
00081030Study Description检查的描述.LO
00080090Referring Physician's Name​医师名称PN​
00101010Patient’s Age做检查时刻的患者年龄,而不是此刻患者的真实年龄.AS

Series:序列信息,键值为Series Instance UID(0020, 000E)

GroupElementTag Description中文解释VR
00200011Series Number:A number that identifies this Series.序列号: 识别不同检查的号码.IS
0020000ESeries Instance UID:Unique identifier for the Series.序列实例号: 唯一标记不同序列的号码.UI
00080060Modality检查模态(MRI/CT/CR/DR)CS
0008103ESeries Description检查描述和说明LO
00080021Series Date检查日期DA
00080031Series Time检查时间TM
00200032Image Position (Patient):The x, y and z coordinates of the upper left hand corner of the image, in mm.图像位置: 图像的左上角在空间坐标系中的x,y,z坐标,单位是毫米.如果在检查中,则指该序列中第一张影像左上角的坐标.DS
00200037Image Orientation (Patient):The direction cosines of the first row and the first column with respect to the patient.图像方位:DS
00180050Slice Thickness:Nominal slice thickness, in mm.层厚.DS
00180088Spacing Between Slices层与层之间的间距,单位为mmDS
00201041Slice Location:Relative position of exposure expressed in mm.实际的相对位置,单位为mm.DS
00180023MR AcquisitionCS
00180015Body Part Examined身体部位.CS

Image:SOP影像信息,键值为SOP Instance UID(0008, 0018)

GroupElementTag Description中文解释VR
00080008Image Type:Image identification characteristics.CS
00080018SOP Instance UIDSOP实例UID.
00080023Content Date:The date the image pixel data creation started.影像拍摄的日期.DA
00080033Content Time影像拍摄的时间.TM
00200013Image/Instance Number:A number that identifies this image.图像码: 辨识图像的号码.IS
00280002Samples Per Pixel:Number of samples (planes) in this image.图像上的采样率.US
00280004Photometric Interpretation:Specifies the intended interpretation of the pixel data.光度计的解释,对于CT图像,用两个枚举值 MONOCHROME1,MONOCHROME2. 用来判断图像是否是彩色的, MONOCHROME1/2是灰度图, RGB则是真彩色图,还有其他.CS
00280010Rows: Number of rows in the image.图像的总行数,行分辨率.US
00280011Columns: Number of columns in the image.图像的总列数,列分辨率.US
00280030Pixel Spacing:Physical distance in the patient between the center of each pixel.像素间距. 像素中心之间的物理间距.DS
00280100Bits Allocated:Number of bits allocated for each pixel sample. Each sample shall have the same number of bits allocated.分配的位数: 存储每一个像素值时分配的位数,每一个样本应该拥有相同的这个值.US
00280101Bits Stored:Number of bits stored for each pixel sample. Each sample shall have the same number of bits stored.存储的位数:有12到16列举值. 存储每一个像素用的位数.每一个样本应该有相同值.US
00280102High Bit:Most significant bit for pixel sample data. Each sample shall have the same high bit.高位.US
00280103Pixel Representation:Data representation of the pixel samples. Each sample shall have the same pixel representation.Enum: 0000H=unsigned integer,0001H=2’s complement.像素数据的表现类型: 这是一个枚举值,分别为十六进制数0000和0001. 0000H = 无符号整数, 0001H = 2的补码.US
00281050Window Center窗位.DS
00281051Window Width窗宽.DS
00281052Rescale Intercept:The value b in relationship between stored values (SV) and the output units.Output units = m*SV + b.Required if Modality LUT Sequence (0028, 0030) is not present.截距: 如果表明不同模态的LUT颜色对应表不存在时,则使用方程 Units = m*SV + b,计算真实的像素值到呈现像素值。 其中这个值为表达式中的b。DS
00281053Rescale Slope:m in the equation specified by Rescale Intercept (0028,1052).Required if Rescale Intercept is present.斜率. 这个值为表达式中的m。DS
00281054Rescale Type:Specifies the output units of Rescale Slope (0028,1053) and Rescale Intercept (0028,1052).Enum: US=Unspecified Requried if Photometric Interpretation is MONOCHROME2, and Bits Stored is greater than 1.This specifies an identity Modality LUT transformation.输出值的单位. 这是一个枚举值,LO


 

4.UID的分类和三级层级关系

UID含义
第一级:StudyInstanceUID标识同一患者的一次检查
第二级:SeriesInstanceUID标识一次检查下的一次序列
第三级:SOPInstanceUID标识一次序列下的产生的其中一个图像
  • UID的生成可自行写方法生成,也可使用第三库生成(DCMTK有相应的函数)
enum UID_Type
{UID_Study = 1,UID_Series,UID_Image 
}std::string GenerateUniqueId(UID_Type type)
{char uid[100];switch (type){case UID_Study:dcmGenerateUniqueIdentifier(uid, SITE_STUDY_UID_ROOT);break;case UID_Series:dcmGenerateUniqueIdentifier(uid, SITE_SERIES_UID_ROOT);break;case UID_Image:dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT);break;default:std::cout << "The type of unique id that is not supported! type :" << type << std::endl;break;}return std::string(uid);
}

5.Dicom文件的解读步骤

  1. 前128个字节为00H,然后读取4个字节,值为“DICM”,确认是DICOM格式文件
  2. 其后就是meta info和data set,根据Tag读取文件数据信息
  3. 直到(7fe0, 0010),存储图像数据的位置
  4. 读写一定要统一编码方式,否则同样的数据在不同的平台下会得出不同的结果


 

二.Dicom标准定义的数据字典

1.标准数据字典(Stardard Data Dictionary)

 

2.私有数据字典(Private Data Dictionary)

 

 

3.数据字典格式

  • Tag:属性标识,为两个十六进制的数的组合(0x0002, 0x0003),分别是Group和Element
    • Tag是按照Group和Element标签编号来排序的
  • Attribute:属性名称,和Tag是一一对应的
  • VR(Value Representation):数据类型,总共有27个值
  • VM(Value Multiplicity):规定了这个属性可以包含一个或多个数据值
    • 如果是二进制的多个值,直接拼接就好,可以根据字节数来获取
    • 如果是字符串的多个值,则用‘''来分隔

4.标准命令字典(Standard Command Dictionary)

  • Group为0x0000,表示的都是操作命令,例如"打印","存储","Get请求"等
  • 例如(0x0000,0100)为command type,(0x0000,0110)为command message id

三.VR定义表

VR含义允许的字符数据长
**CS **- Code String 代码字符串开头结尾可以有没有意义的空格的字符串,比如“CD123_4”大写字母,0-9,空格以及下划线字符最多 16 个字符
SH - Short String 短字符串短字符串,比如:电话号码,ID等最多 16 个字符
LO - Long String 长字符串一个字符串,可能在开头、结尾填有空 格。比如“Introduction to DICOM”最多 64 个字符
ST - Short Text 短文本可能包含一个或多个段落的字符串最多 1024 个字符
LT - Long Text 短文本可能包含一个或多个锻炼的字符串,与LO相同,但可以更长最多 10240 个字符
UT - Unlimited Text 无限制文本包含一个或多个段落的字符串,与LT 类似最多(2的32次方–2)个字符
AE- Application Entity 应用实体标识一个设备的名称的字符串,开头和 结尾可以有无意义的字符。比如“MyPC01”最多 16 个字符
PN - Person Name 病人姓名有插入符号()作为姓名分隔符的病人姓名。比如“SMITHJOHN” “Morrison- JonesSusan^^Ph.D, Chief Executive Officer”最多 64 个字符
UI- Unique Identifier (UID) 唯一标识符一个用作唯一标识各类项目的包含UID 的字符串。比如“1.2.840.10008.1.1”0-9 和半角句号(.)最多64 个字符
DA - Date 日期格式为 YYYYMMDD 的字符串;YYYY 代表年;MM 代表月;DD 代表日。比 如“20050822”表示2005 年 8 月 22 日0-98个字符
TM - Time 时间格式为 HHMMSS 的字符串。FRAC; HH 表示小时(范围“00”-“23”); MM 表示分钟(范围“00”-“59”); 而 FRAC 包含秒的小数部分,即百万分 之一秒。比如“183200.00” 表示下午 6:32 就是微秒(microsecond)0-9 和半角句号(.)最多 16 个字符
DT - Date Time 日期时间格式为 YYYYMMDDHHMMSS. FFFFFF,串联的日期时间字符串。字符串的各部分从左至右是:年YYYY;月 MM;日 DD;小时HH;分钟 MM;秒 SS;秒的小数FFFFFF。比如20050812183000.00”表示 2005年 8 月 12 日下午 18 点 30 分 00秒0-9,加号,减号和半角句号最多 26 个字符
AS - Age String 年龄字符串符合以下格式的字符串:nnnD,nnnW, nnnM, nnnY;其中nnn 对于 D 来说表示天数,对于W来说表示周数,对于M 来说表示月数,对于 Y 来说表示岁数。 比如“018M”表示他的年龄是 18 个月0–9, D,W,M, Y4 个字符
IS- Integer String 整型字符串表示一个整型数字的字符串。比如“-1234567”0-9,加号(+),减号(-)最多 12 个字符
DS - Decimal String 小数字符串表示定点小数和浮点小数。 比如“12345.67”,“-5.0e3”0-9,加号(+),减号(-), 最多 16个字符 E,e和半角句号(.)最多 16 个字符
SS - Signed Short 有符号短型符号型二进制整数,长度 16 比特2 个字符
US - Unsigned Short 无符号短型无符号二进制整数,长度 16 比特2 个字符
SL - Signed Long 有符号长型有符号二进制整数4 个字符
UL - Unsigned Long 无符号长型无符号二进制整数,长度 32 比特4 个字符
AT - Attribute Tag 属性标签16 比特无符号整数的有序对,数据元素的标签4 个字符
FL - Floating Single 单精度浮点单精度二进制浮点数字4 个字符
FD - Floating Point Double 双精度二进制浮点数字双精度二进制浮点数字8 个字符
OB - Other Byte String 其他字节字符串字节的字符串(“其他”表示没有在VR中定义的内容)
OW- Other Word String 其他单词字符串16 比特(2 字节)单词字符串
OF- Other Float String 其他浮点字符串32 比特(4 个字节)浮点单词字符串
SQ - Sequence Items 条目序列条目的序列
UN – Unknown 未知字节的字符串,其中内容的编码方式是未知的

四.Dicom编码方式(即传输语法)

1.VR隐式和显示编码

  • VR隐式编码(implicit VR encoding)

 

 

  • VR显式编码(explicit VR encoding)
    VR = OB,OW,OF,SQ,UT,UN,VR固定2个字节,其后固定两个字节(0x0000)

 

 

VR != OB,OW,OF,SQ,UT,UN,VR固定2个字节,Value Length变成2个字节

 

 

2.BIG/LITTLE Endian(大端模式/小端模式)

  • 大端模式(Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
  • 小端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
  • 影响多字节类型数据的编码
    • 2-byte US, SS, OW,AT
    • 4-byte OF, UL, SL, FL
    • 8 byte FD
例如: 8-byte FD的数据6789ABCD, 
在little endian编码下是CDAB8967, 在BIG endian编码下是6789ABCD.
  • DCMTK下保存数据是可以使用枚举值来指定编码类型
OFCondition status = m_fileformat.saveFile(filePath.c_str(), EXS_LittleEndianExplicit);
if (!status.good())
{
std::cout << "Save Dimcom File Error!" << std::endl;
}/** enumeration of all DICOM transfer syntaxes known to the toolkit*/
typedef enum {/// unknown transfer syntax or dataset created in-memoryEXS_Unknown = -1,/// Implicit VR Little EndianEXS_LittleEndianImplicit = 0,/// Implicit VR Big Endian (pseudo transfer syntax that does not really exist)EXS_BigEndianImplicit = 1,/// Explicit VR Little EndianEXS_LittleEndianExplicit = 2,/// Explicit VR Big EndianEXS_BigEndianExplicit = 3,/// JPEG Baseline (lossy)EXS_JPEGProcess1 = 4,/// JPEG Extended Sequential (lossy, 8/12 bit)EXS_JPEGProcess2_4 = 5,/// JPEG Extended Sequential (lossy, 8/12 bit), arithmetic codingEXS_JPEGProcess3_5 = 6,/// JPEG Spectral Selection, Non-Hierarchical (lossy, 8/12 bit)EXS_JPEGProcess6_8 = 7,/// JPEG Spectral Selection, Non-Hierarchical (lossy, 8/12 bit), arithmetic codingEXS_JPEGProcess7_9 = 8,/// JPEG Full Progression, Non-Hierarchical (lossy, 8/12 bit)EXS_JPEGProcess10_12 = 9,/// JPEG Full Progression, Non-Hierarchical (lossy, 8/12 bit), arithmetic codingEXS_JPEGProcess11_13 = 10,/// JPEG Lossless with any selection valueEXS_JPEGProcess14 = 11,/// JPEG Lossless with any selection value, arithmetic codingEXS_JPEGProcess15 = 12,/// JPEG Extended Sequential, Hierarchical (lossy, 8/12 bit)EXS_JPEGProcess16_18 = 13,/// JPEG Extended Sequential, Hierarchical (lossy, 8/12 bit), arithmetic codingEXS_JPEGProcess17_19 = 14,/// JPEG Spectral Selection, Hierarchical (lossy, 8/12 bit)EXS_JPEGProcess20_22 = 15,/// JPEG Spectral Selection, Hierarchical (lossy, 8/12 bit), arithmetic codingEXS_JPEGProcess21_23 = 16,/// JPEG Full Progression, Hierarchical (lossy, 8/12 bit)EXS_JPEGProcess24_26 = 17,/// JPEG Full Progression, Hierarchical (lossy, 8/12 bit), arithmetic codingEXS_JPEGProcess25_27 = 18,/// JPEG Lossless, HierarchicalEXS_JPEGProcess28 = 19,/// JPEG Lossless, Hierarchical, arithmetic codingEXS_JPEGProcess29 = 20,/// JPEG Lossless, Selection Value 1EXS_JPEGProcess14SV1 = 21,/// Run Length Encoding (lossless)EXS_RLELossless = 22,/// Deflated Explicit VR Little EndianEXS_DeflatedLittleEndianExplicit = 23,/// JPEG-LS (lossless)EXS_JPEGLSLossless = 24,/// JPEG-LS (lossless or near-lossless mode)EXS_JPEGLSLossy = 25,/// JPEG 2000 (lossless)EXS_JPEG2000LosslessOnly = 26,/// JPEG 2000 (lossless or lossy)EXS_JPEG2000 = 27,/// JPEG 2000 part 2 multi-component extensions (lossless)EXS_JPEG2000MulticomponentLosslessOnly = 28,/// JPEG 2000 part 2 multi-component extensions (lossless or lossy)EXS_JPEG2000Multicomponent = 29,/// JPIP ReferencedEXS_JPIPReferenced = 30,/// JPIP Referenced DeflateEXS_JPIPReferencedDeflate = 31,/// MPEG2 Main Profile at Main LevelEXS_MPEG2MainProfileAtMainLevel = 32,/// MPEG2 Main Profile at High LevelEXS_MPEG2MainProfileAtHighLevel = 33,/// MPEG4 High Profile / Level 4.1EXS_MPEG4HighProfileLevel4_1 = 34,/// MPEG4 BD-compatible High Profile / Level 4.1EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 35,/// MPEG4 High Profile / Level 4.2 For 2D VideoEXS_MPEG4HighProfileLevel4_2_For2DVideo = 36,/// MPEG4 High Profile / Level 4.2 For 3D VideoEXS_MPEG4HighProfileLevel4_2_For3DVideo = 37,/// MPEG4 Stereo High Profile / Level 4.2EXS_MPEG4StereoHighProfileLevel4_2 = 38,/// HEVC/H.265 Main Profile / Level 5.1EXS_HEVCMainProfileLevel5_1 = 39,/// HEVC/H.265 Main 10 Profile / Level 5.1EXS_HEVCMain10ProfileLevel5_1 = 40,/// Private GE Little Endian Implicit with big endian pixel dataEXS_PrivateGE_LEI_WithBigEndianPixelData = 41
} E_TransferSyntax;

3.分组长度编码

group的第一个元素可以记录该group的总长度,但该属性值是不是必须要写的,一个组的第一个元素(gggg,0000)可以记录改组的总长度,因为每个元素的长度是偶数,所以这个总长度的值也是偶数

 

好处:
* 如果不需要读某个Group时,可以直接根据字节数跳过;这样就可以加快DICOM文件的处理过程。它在处理奇数Group的数据时候尤其明显。因为奇数的Group数值自己不能读,可以很快地跳过。
* 它也可以作为校验数据长度。

坏处:
* 在写(gggg,0000)这个元素的时候,意味着这个group中的所有元素必须首先获取到,并且在(gggg,0000)之前已经编码好。对于DICOM开发者来说,这意味着两件事:

(1)所有的元素都必须编码完成,才能编码object
(2)修改了DICOM对象中一个元素时,就不可避免地修改了它的数值长度,就需要相应的修改它的值。这样就会带来额来的负担。

4.SQ Data Element的层数和编码规则

  • SQ Data Element最多3层,编码时要从下往上

 

 

SQ序列中的DICOM对象数据值以(FFFE, E000)开头,但数据长度可以不明确

1.DICOM对象数据值有明确的长度;如例1中的第一个和第二个数据对象;

 

  1. DICOM对象数据值没有明确的长度,标记为FFFFFFFF,需要使用(FFFE,E0DD)来识别结尾,这一项的值长度为0

 

整个SQ序列数据长度也可以不明确

1.有明确的长度

 

2.没有明确的长度,标记为FFFFFFFF,需要使用(FFFE,E0DD)来识别结尾,这一项的值长度为0




作者:JasonLiThirty
链接:https://www.jianshu.com/p/758fa8c22474
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinCE OAL中的OEMIoControl函数

关于OEMIoControl函数&#xff0c;我在2008年1月份写过一篇blog叫“WinCE BSP中OAL层中的OEMIoControl介绍”&#xff0c;已经比较详细的介绍了OEMIoControl&#xff0c;今天在这里只是对OEMIoControl中比较常用的case说一说。看看PB的文档就知道OEMIoControl可以包含很多case而…

实用MYSQL语句收集

SQL分类&#xff1a; DDL—数据定义语言(Create&#xff0c;Alter&#xff0c;Drop&#xff0c;DECLARE) DML—数据操纵语言(Select&#xff0c;Delete&#xff0c;Update&#xff0c;Insert) DCL—数据控制语言(GRANT&#xff0c;REVOKE&#xff0c;COMMIT&#xff0c;ROLLBAC…

【转】xilinx usb下载器 速度高速极限设置 JTAG-SMT2 JTAG-HS2 JTAG-HS3和Platform Cable USB DLC9 DLC10速度测试

xilinx usb下载器 下载速度极限设置以及高速JTAG-SMT2(HS1 HS2 HS3)和DLC9 DLC10 速度测试 对于一款xilinx的下载器&#xff0c;研发和烧录以及boss都最关心下载速度的极限值。因为速度快可以在短时间内完成下载和仿真采集数据等任务。时间就是金钱&#xff0c;能节约时间大家…

DataGridView中的CheckBox

1.为DataGridView添加一列类型为DataGridViewCheckBoxColumn的列, 如果想CheckBox能单独选择的话,就一定要为DataGridView启用编辑.否则就去掉启用编辑的勾选项. 2.DataGridView中CheckBox的全选与不全选 一般会使用Button,LinkLabel,CheckBox来做为事件的起点,那么就可以在相应…

WinCE的I2C驱动程序设计

1 I2C 通信协议及S3C2410 芯片介绍 I2C(Inter Integrated Circuit) 总线是1980 年由Philips 公司推出的。 I2C 总线用两条线&#xff08;SDA 和SCL &#xff09;在总线和装置之间传递信息&#xff0c;在微控制器和外部设备之间进行串行通信或在主设备和从设备之间进行双向数据传…

【转】vivado18.3的安装 安装教程

原装性能 Xilinx下载器 赛灵思下载线 Platform Cable USB仿真器 Xilinx下载器 CPLD FPGA digilent usb JTAG SMT2 高速 赛灵思线 转自&#xff1a;Vivado18.3的安装 安装教程_Daniel_Banana的博客-CSDN博客 本文内容学习自【ALINX】FPGA ZYNQ视频教程——AX7010/AX7020教程—…

局域网共享设置

我们在多机使用时候&#xff0c;连机使用共享文件是最常用到的&#xff0c;如何设置共享文件呢&#xff1f;下面我们就来一一介绍。首先我们要看看共享文件时需要的基本条件。 windows网上邻居互访的基本条件&#xff1a; 1) 双方计算机打开&#xff0c;且设置了网络共享资源&a…

【转】5分钟了解FPGA之Xilinx 7系列

转自&#xff1a;http://xilinx.eetrend.com/content/2019/100042384.html xilinx7系列FPGA主要包括&#xff1a;Spartan-7、Artix-7、Kintex-7、Virtex-7。其性能/密度/价格也随着系列的不同而提升。 Spartan7系列是7系列中的屌丝青年&#xff0c;拥有最低的价格、最低的功耗…

WinCE 修改系统字体 开启ClearType平滑字体

系统字体&#xff1a; "Wt"宽度[正负相等:A-A,并且过大的时候例如这里的:fffffff4按XFFFFFFFF-X]"Ht"高度[正负相等:A-A,并且过大的时候例如这里的:fffffff4按XFFFFFFFF-X]"Nm""字体名称""CS"[0使用系统默认,1使用Nm] &quo…

不允许后退提交数据的方法(抗重复刷新提交)

试试了一下在 .NET中通过如下语句Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);就可以使页面的缓存失效&#xff0c;每次都需要获取新页面。 转载于:https://www.cnblogs.com/0000/archive/2009/11/11/1601036.html

【转】FPGA到底是啥?

转自&#xff1a;FPGA到底是啥&#xff1f; - 知乎 怎么才叫学会了FPGA&#xff0c;怎么才叫学好了FPGA&#xff1f;我相信有很多朋友有类似的问题&#xff0c;因为在多数人的潜意识里&#xff0c;FPGA是非常高深莫测的技术&#xff0c;能够玩转FPGA的都是大神级的人物。 其实…

VS配合VSS时,编译报错:未能向文件“....csproj.FileListAbsolute.txt”写入命令行,对路径的访问被拒绝。...

最近帮别人调试的时候&#xff0c;出现这个问题。环境&#xff1a;VS2008VSS2005&#xff0c;多人配合完成一个项目。 在编译的时候报错&#xff1a;未能向文件“....csproj.FileListAbsolute.txt”写入命令行,对路径的访问被拒绝。 在网上开始查找出错的解决方法&#xff0c;终…

【转】重新打包DebianISO实现无人应答安装(UEFI+BIOS)

转自&#xff1a;重新打包DebianISO实现无人应答安装&#xff08;UEFIBIOS&#xff09; - 全部 - 真不是你的 之前我写过打包DebianISO的文章&#xff0c;但是那种打包的方法只能用在引导是BIOS的机器上&#xff0c;按照正常的情况&#xff0c;应该是UEFIBIOS同时支持。 正好前…

定制mini2440 wince启动界面

定制mini2440 wince启动界面过程 我的显示屏是7寸的&#xff0c;所以应该按照分辨率制作一张800*480像素的图片。 详细步骤如下&#xff1a; 1、我用photoshop的制作的&#xff0c;如下图&#xff1a; 2、用bmp2T.exe转换这个图片&#xff0c;在命令符下输入bmp2T空格图片名…

Copying to tmp table Problem Solving

Labels: MySQL, MySQL_Problem_Solving 今天一早突然系统突然报慢&#xff0c;查了一下是以下语句&#xff1a; 6177700 username ip db——name Query 549 Copying to tmp table SELECT ....................原因如下&#xff1a;Copying to tmp table on disk The tempora…

WinCE启动界面的定制

本文将以模拟器为例&#xff0c;简单介绍如何定制WinCE的启动界面&#xff0c;实现动画效果。在实际硬件平台上一般在BOOTLOADER中定制开机界面。如果BOOT从Flash加载NK到内存的时间较长&#xff0c;通常也会加一个进度条显示。如果从NK加载完成到进入CE桌面的时间也很长&#…

【转】CT辐射量如何计算?

转自:CT辐射量如何计算&#xff1f; - 知乎 作者&#xff1a;西门子中国 链接&#xff1a;https://www.zhihu.com/question/27399697/answer/190062962 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 CT检查后&am…

linux c++连接mysql示例

编译和连接程序 MySQL中有一个特殊的脚本,叫做mysql_config. 它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.你需要使用下面两个选项. 1. --libs 选项 - 连接MySQL客户端函数库所需要的库和选项. $ mysql_config --libs 2. --cflags 选项 - 使用必要的include文件…

ucGUI内存管理

ucGUI内存管理分析 1. 概述 ucGUI为了提高在不同硬件与软件平台的可移植性&#xff0c;它的内存分配没有用到像molloc和free这样的与平台相关的函数。它有自己的一套机制来管理内存。以下详细描述其内存管理机制。 2. ucGUI需要管理的内存 a) 窗体&#x…

【转】TCP和UDP的区别

TCP协议与UDP协议的区别 首先咱们弄清楚&#xff0c;TCP协议和UDP协议与TCP/IP协议的联系&#xff0c;很多人犯糊涂了&#xff0c; 一直都是说TCP协议与UDP协议的区别&#xff0c;我觉得这是没有从本质上弄清楚网络通信&#xff01; TCP/IP协议是一个协议簇。里面包括很多协议…