软件开发

免费源码下载基地程序员训练基地

推荐免费下载进销存系统源码

下载地址:http://www.hur.cn/tg/linkin.asp?linkid=187412
下载地址:[URL=http://www.hur.cn/tg/linkin.asp?linkid=187412 ]http://www.hur.cn/tg/linkin.asp?linkid=187412[/URL]
下载地址:<a href=http://www.hur.cn/tg/linkin.asp?linkid=187412 >http://www.hur.cn/tg/linkin.asp?linkid=187412</a>

进销存系统源码(源代码大小15M)
系统功能表
功能组 功能处理
基本数据作业
客户建档
维护客户数据
 厂商建档
 委外厂商建档
 工作员建档
 原料仓
 物料仓
 半成品仓
 成品仓
 客户来料仓
 维护客户来料仓数据
 华软大型商业源码下载
 物料结构图
 BOM
 常用币别设定
 系统参数设定
 使用者设定
 变更密码  
每日作业 订单
成品订单登录
 生产制令单
 成品(半成品)生产制令单
 采购单 原料
  物料
 进(退)料单 原料
  物料
 客户来料单
 内制
领(退)料单
客户来料
  原料
  物料
  半成品 跟踪制令单
 内制
入库单 半成品 跟踪修改后的制领单
  华软大型商业源码下载
  成品 跟踪修改后的制领单
 委外
领(退)料单 原料 跟踪制令单
  半成品 跟踪制令单
 委外
入库单 半成品
  成品跟踪修改后的制领单
 出(退)货单
帐款作业 应收
帐款 帐款月结
  发票处理
  对账单打印
  总帐打印
  帐款冲帐
 进料
应付 对账单打印
  帐款月结
  总帐打印
  帐款冲帐
 委外
应付 对账单打印
  帐款月结
  总帐打印
  帐款冲帐
报表与查询作业 盘点单 原料
  物料
  半成品
  成品
  客户来料
 出货对账单
数据维护 资料清除
 资料备份与恢复

纠正EAN13函数错误,真正识别条码

EAN码是国际物品编码协会制定的一种商品用条码,通用于全世界。EAN码符号有标准版(EAN-13)和缩短版(EAN-8)两种,我国的通用商品条码与其等效。我们日常购买的商品包装上所印的条码一般就是EAN码。我这里给出的是EAN-13的算法代码,大家如果需要EAN-8条码可以自行修改下。



* 函 数 名:EAN13()
* 功  能:根据条EAN-13码符号字符串生成条码位图
* 参  数:BM 字符型(12位EAN-13码符号字符串 如:'690102818039')
* 返 回 值:生成的条码位图的文件名
* 运行环境:WIN95以上版本。Visual FoxPro 6.0,7.0,8.0,9.0
* 算法制作:行者孙(QQ:310727570)-VFP应用程式算法群(12787940)
* 说 明:转载请保留出处!
Function EAN13(BM As String )
Private BM
Dimension EAN_code[10,3]
EAN_code[1,1]='00000011110011'
EAN_code[1,2]='00110000111111'
EAN_code[1,3]='11111100001100'
EAN_code[2,1]='00001111000011'
EAN_code[2,2]='00111100001111'
EAN_code[2,3]='11110000111100'
EAN_code[3,1]='00001100001111'
EAN_code[3,2]='00001111001111'
EAN_code[3,3]='11110011110000'
EAN_code[4,1]='00111111001100'
EAN_code[4,2]='00001111110011'
EAN_code[4,3]='11000000001100'
EAN_code[5,1]='00110000001111'
EAN_code[5,2]='00001111110011'
EAN_code[5,3]='11001111110000'
EAN_code[6,1]='00111100000011'
EAN_code[6,2]='00111111000011'
EAN_code[6,3]='11000011111100'
EAN_code[7,1]='00110011111111'
EAN_code[7,2]='00000011001111'
EAN_code[7,3]='11001100000000'
EAN_code[8,1]='00111111001111'
EAN_code[8,2]='00001100000011'
EAN_code[8,3]='11000000110000'
EAN_code[9,1]='00111100111111'
EAN_code[9,2]='00000011000011'
EAN_code[9,3]='11000011000000'
EAN_code[10,1]='00000011001111'
EAN_code[10,2]='00001100111111'
EAN_code[10,3]='11111100110000'
Dimension EAN_left[10]
EAN_left[1]='111111'
EAN_left[2]='112122'
EAN_left[3]='112212'
EAN_left[4]='112221'
EAN_left[5]='121122'
EAN_left[6]='122112'
EAN_left[7]='122211'
EAN_left[8]='121212'
EAN_left[9]='121221'
EAN_left[10]='122121'
Dimension EAN_mode[8]
Store '' To EAN_mode
If Len(Alltrim(BM))<>12 .And. Val(BM)>0
Messagebox('EAN-13编码长度不规范',268,'信息提示')
Return ''
Else
EAN_mode[1]='000000000000000000'
EAN_mode[2]='110011'
For i=0 To 9
If Val(Substr(BM,1,1))=i
For ii=1 To 6
BMZ=Val(Substr(BM,ii+1,1))
MODE=Val(Substr(EAN_left[i+1],ii,1))
EAN_mode[3]=EAN_mode[3]+EAN_code[BMZ+1,MODE]
Endf
Endi
Endf
EAN_mode[4]='0011001100'
For i=1 To 5
BMZ=Val(Substr(BM,i+7,1))
EAN_mode[5]=EAN_mode[5]+EAN_code[BMZ+1,3]
Endf
JY_A=0
JY_B=0
For i=1 To 12
If i%2=0
JY_A=JY_A+Val(Substr(BM,i,1))
Else
JY_B=JY_B+Val(Substr(BM,i,1))
Endif
Endf
JYM=10-(JY_A*3+JY_B)%10
If JYM=10
JYM=1
Endi
EAN_mode[6]=EAN_code[JYM+1,3]
EAN_mode[7]='110011'
EAN_mode[8]='000000000000000000'
EAN_code=EAN_mode[1]+EAN_mode[2]+EAN_mode[3]++EAN_mode[4]+EAN_mode[5]+EAN_mode[6]+EAN_mode[7]+EAN_mode[8]
Dimension BMP[4]
BMP[4]=90
BMP[3]=224
BMP[2]=Int((BMP[3]*3+3)/4)*4*BMP[4]+54
BMP[1]=BMP[2]-54
Dimension BMP_T[4]
For i=1 To 4
k1='0x'+Subs(Righ(Tran(BMP[i],"@0"),8 ),7,2)
k2='0x'+Subs(Righ(Tran(BMP[i],"@0"),8 ),5,2)
k3='0x'+Subs(Righ(Tran(BMP[i],"@0"),8 ),3,2)
k4='0x'+Subs(Righ(Tran(BMP[i],"@0"),8 ),1,2)
BMP_T[i]=Chr(&k1)+Chr(&k2)+Chr(&k3)+Chr(&k4)
Endf
st1='BM'+BMP_T[2]+Chr(0)+Chr(0)+Chr(0)+Chr(0)+Chr(54)+Chr(0)+Chr(0)+Chr(0);
+Chr(40)+Chr(0)+Chr(0)+Chr(0)+BMP_T[3]+BMP_T[4]+Chr(1)+Chr(0)+Chr(24)+Chr(0)+Chr(0)+Chr(0)+Chr(0)+Chr(0)+BMP_T[1]+Chrt(Spac(16),' ',Chr(0))
st2=Chrt(Spac(224*10*3),' ',Chr(255))
st3=''
For i=11 To 70
For k1=1 To 224
If Substr(EAN_code,k1,1)=='1'
st3=st3+Chr(0)+Chr(0)+Chr(0)
Else
st3=st3+Chr(255)+Chr(255)+Chr(255)
Endi
Endf
Endf
Pb=Chr(0)+Chr(0)+Chr(0)
Pw=Chr(255)+Chr(255)+Chr(255)
st4=Chrt(Spac(18*3),' ',Chr(255))+Pb+Pb+Pw+Pw+Pb+Pb+Chrt(Spac(84*3),' ',Chr(255))+Pw+Pw+Pb+Pb+Pw+Pw+Pb+Pb+Pw+Pw+Chrt(Spac(84*3),' ',Chr(255))+Pb+Pb+Pw+Pw+Pb+Pb+Chrt(Spac(16*3),' ',Chr(255))
st4=st4+st4
Dimension T_D[11]
T_D[1]='11111000111111111100000111111110111100111111101111101111111011111011111110111110111111101111101111'+;
'11101111101111111011111011111110111110111111101111101111111011110011111111000001111111111000111111'
T_D[2]='11111110111111111111001111111111100011111111100000111111111011101111111111111011111111111110111111'+;
'11111110111111111111101111111111111011111111111110111111111111101111111111111011111111111110111111'
T_D[3]='11111000111111111000000111111110111110111111101111101111111111111011111111111110111111111111011111'+;
'11111110011111111111001111111111100111111111110011111111111001111111111110000000111111000000001111'
T_D[4]='11111000111111111100000111111110011100111111101111101111111111110111111111110011111111111100011111'+;
'11111111101111111111111011111111111110111111101111101111111011110011111111000001111111111000111111'
T_D[5]='11111111011111111111100111111111111001111111111100011111111110110111111111011101111111110111011111'+;
'11101111011111110111110111111100000000011111000000000111111111110111111111111101111111111111011111'
T_D[6]='11110000001111111100000011111111011111111111110111111111111000001111111110000001111111101111101111'+;
'11111111101111111111111011111111111110111111101111101111111011110011111111000001111111111000111111'
T_D[7]='11111000111111111100000111111110011110111111101111111111111011001111111110000001111111100111001111'+;
'11101111101111111011111011111110111110111111101111101111111001111011111111000001111111111000111111'
T_D[8]='11000000001111110000000011111111111100111111111111011111111111101111111111111011111111111101111111'+;
'11111101111111111110011111111111101111111111111011111111111110111111111111101111111111110011111111'
T_D[9]='11111000111111111100000111111110011100111111101111101111111011111011111110011100111111110000011111'+;
'11110000011111111011111011111110111110111111101111101111111011111011111110000001111111111000111111'
T_D[10]='11111000111111111100000111111110111100111111101111101111111011111011111110111110111111101111101111'+;
'11101111001111111100000011111111100110111111111111101111111011110111111110000001111111111001111111'
T_D[11]='11111111111111111111111111111111111111111111111111001111111111000011111111000001111111100111111111'+;
'11100111111111111100000111111111110000111111111111001111111111111111111111111111111111111111111111'
Dimension td[14]
Store '' To td
For i=1 To 14
For k1=1 To 13
zh=Val(Substr(BM+Alltrim(Str(JYM)),k1,1))+1
td[i]=td[i]+Substr(T_D[zh],14*i-13,14)
Endf
td[i]=td[i]+Substr(T_D[11],14*i-13,14)
Endf
For i=1 To 7
td[i]='11'+Subs(td[i],1,14)+'11'+'001100'+Subs(td[i],15,84)+'1100110011'+Subs(td[i],99,84)+'001100'+Subs(td[i],183,14)+'11'
Endf
For i=8 To 14
td[i]='11'+Subs(td[i],1,14)+'11'+'111111'+Subs(td[i],15,84)+'1111111111'+Subs(td[i],99,84)+'111111'+Subs(td[i],183,14)+'11'
Endf
For i=1 To 14
td[i]=Strtran(td[i],'1',Chr(255)+Chr(255)+Chr(255))
td[i]=Strtran(td[i],'0',Chr(0)+Chr(0)+Chr(0))
Endf
st5=Chrt(Spac(224*4*3),' ',Chr(255))
h=Fcreate(BM+Alltrim(Str(JYM))+'.bmp')
=Fwrite(h,st1)
=Fwrite(h,st5)
For i=14 To 1 Step -1
=Fwrite(h,td[i])
Endf
=Fwrite(h,st4)
=Fwrite(h,st3)
=Fwrite(h,st2)
Fclose(h)
Return BM+Alltrim(Str(JYM))+'.bmp'
Endif

调用方法:如如:thisform.image1.picture=EAN13('6901028039')


调用效果:[/img]

_________________
╭⌒╮VFP应用程式算法群 12787940¤╭⌒
╭http://hi.baidu.com/myvfp/blog
,︶︶︶︶,""︶~~ ,""~︶︶  ,""
╱◥█◣ ╱◥█◣
︱田︱田︱︱田︱田︱
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬

http://hi.baidu.com/myvfp/blog




以上是转载来至互联网的vfp函数,但由于函数中存在多处错误。经常导致条码无法识别。
下面将错误位置指出并纠正


出错的语句:
EAN_code[4,1]='00111111001100'

EAN_code[4,2]='00001111110011'
 
EAN_code[7,2]='00000011001111'

JYM=10-(JY_A*3+JY_B)%10
If JYM=10
JYM=1
Endi


纠正后的语句:
EAN_code[4,1]='00111111110011'
 
EAN_code[4,2]='00110000000011'

EAN_code[7,2]='00000000110011'

JYM=10-(JY_A*3+JY_B)%10
If JYM=10
JYM=0
Endif

串口通讯控件介绍

    作为串口通讯开发我见过的只有两种(MSCOMM32.OCX,PCOMM.DLL),其中最为常用的是MSCOMM32网络上资料好找适用范围也比较广泛。他可以支持vfp/vb/c++/delphi/pb等开发工具使用。对于pcomm本人没有用过所以不进行解说,但是pcomm同样可以实现串口通讯功能。

如何手工注册MSComm等控件






       第一步:将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹中(windows98/me拷到system目录下,windowsnt/2000/xp拷到system32目录下)。要注意的是,MSComm控件是要授权的,所以必须将其使用“执照”Licence 在注册表中登记注册。


       第二步:用Windows下的注册工具regsvr32注册该OCX控件,点击“开始”->"运行",再在中填入(假设操作安装在C盘,WIN2000):


      Regsvr32  C:winntsystem32Mscomm32.ocx


       第三步:在注册表中手工新建一个主键项:先在点击“开始”->"运行",再在中填入regedit命令打开注册表,找到HKEY_CLASSES_ROOTLicenses,在其中添加主键
4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为:


       kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun


   (注:这项内容也可以用记事本程序打开Mscomm.srg文件看到)


         导入reg既可用了。


       Microsoft 网站有介绍,但是却没有完整的reg包。所以下面是我自己收集的一些常用控件授权信息,只要用记事本复制上去,另存为后缀名为reg的文件,再双击导入即可!


REGEDIT
HKEY_CLASSES_ROOTLicenses = Licensing: Copying the keys may be a violation of established copyrights.


// Masked Edit Control 6.0 license key
HKEY_CLASSES_ROOTLicensesBC96F860-9928-11cf-8AFA-00AA00C00905 = mmimfflflmqmlfffrlnmofhfkgrlmmfmqkqj


// Chart Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOTLicenses12B142A4-BD51-11d1-8C08-0000F8754DA1 = aadhgafabafajhchnbchehfambfbbachmfmb


// Common Dialog Control 6.0 license key
HKEY_CLASSES_ROOTLicenses4D553650-6ABE-11cf-8ADB-00AA00C00905 = gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj


// ADO Data Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOTLicensesC4145310-469C-11d1-B182-00A0C922E820 = konhqhioohihphkouimonhqhvnwiqhhhnjti


// Common Controls-3 6.0 license key
HKEY_CLASSES_ROOTLicenses38911DA0-E448-11D0-84A3-00DD01104159 = mcpckchcdchjcjcclidcgcgchdqdcjhcojpd


// Windows Common Controls-2 5.0 (SP2) license key
HKEY_CLASSES_ROOTLicenses9E799BF1-8817-11cf-958F-0020AFC28C3B = uqpqnqkjujkjjjjqwktjrjkjtkupsjnjtoun


// Windows Common Controls license key
HKEY_CLASSES_ROOTLicenses57CBF9E0-6AA7-11cf-8ADB-00AA00C00905 = aahakhchghkhfhaamghhbhbhkbpgfhahlfle


// Data Bound Grid Control 5.0(SP3) license key
HKEY_CLASSES_ROOTLicenses556C75F1-EFBC-11CF-B9F3-00A0247033C4 = xybiedobrqsprbijaegcbislrsiucfjdhisl


// Data Bound List Controls 6.0 license key
HKEY_CLASSES_ROOTLicenses96EFC40-6ABF-11cf-850C-08002B30345D = knsgigmnmngnmnigthmgpninrmumhgkgrlrk


// Internet Transfer Control 6.0 license key
HKEY_CLASSES_ROOTLicenses78E1BDD1-9941-11cf-9756-00AA00C00908 = yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun


// Multimedia Control 6.0 license key
HKEY_CLASSES_ROOTLicensesB1EFCCF0-6AC1-11cf-8ADB-00AA00C00905 = qqkjvqpqmqjjpqjjvpqqkqmqvkypoqjquoun


// Chart Control 6.0 license key
HKEY_CLASSES_ROOTLicenses7C35CA30-D112-11cf-8E72-00A0C90F26F8 = whmhmhohmhiorhkouimhihihwiwinhlosmsl


// Windows Common Controls-2 6.0 license key
HKEY_CLASSES_ROOTLicenses4F86BADF-9F77-11d1-B1B7-0000F8753F5D = iplpwpnippopupiivjrioppisjsjlpiiokuj


// Windows Common Controls 6.0 license key
HKEY_CLASSES_ROOTLicensesED4B87C4-9F76-11d1-8BF7-0000F8754DA1 = knlggnmntgggrninthpgmnngrhqhnnjnslsh


// Comm Control 6.0 license key
HKEY_CLASSES_ROOTLicenses4250E830-6AC2-11cf-8ADB-00AA00C00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun


// DataGrid Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOTLicensesCDE57A55-8B86-11D0-b3C6-00A0C90AEA82 = ekpkhddkjkekpdjkqemkfkldoeoefkfdjfqe


// DataList Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOTLicensesA133F000-CCB0-11d0-A316-00AA00688B10 = cibbcimbpihbbbbbnhdbeidiocmcbbdbgdoc


// DBWin license key
HKEY_CLASSES_ROOTLicensesD015B071-D2ED-11d0-A31A-00AA00688B10 = gjdcfjpcmjicjcdcoihcechjlioiccechepd


// MSDBRPT license key
HKEY_CLASSES_ROOTLicenses9DF1A470-BA8E-11D0-849C-00A0C90DC8A9 = cchcqjejhcgcqcfjpdfcdjkckiqikchcojpd


// FlexGrid Control 6.0 license key
HKEY_CLASSES_ROOTLicenses72E67120-5959-11cf-91F6-C2863C385E30 = ibcbbbebqbdbciebmcobmbhifcmciibblgmf


// MAPI Controls 6.0 license key
HKEY_CLASSES_ROOTLicenses899B3E80-6AC6-11cf-8ADB-00AA00C00905 = wjsjjjlqmjpjrjjjvpqqkqmqukypoqjquoun


// MSRDO 2.0 license key
HKEY_CLASSES_ROOTLicensesB1692F60-23B0-11D0-8E95-00A0C90F26F8 = mjjjccncgjijrcfjpdfjfcejpdkdkcgjojpd


// RemoteData Control 6.0 license key
HKEY_CLASSES_ROOTLicenses43478d75-78e0-11cf-8e78-00a0d100038e = imshohohphlmnhimuinmphmmuiminhlmsmsl


// Windowless Controls 6.0 license key
HKEY_CLASSES_ROOTLicenses80E80EF0-DBBE-11D0-BCE2-00A0C90DCA10 = qijimitpmpnpxplpvjnikpkpqoxjmpkpoivj


// PictureClip Control 6.0 license key
HKEY_CLASSES_ROOTLicenses6FB38640-6AC7-11cf-8ADB-00AA00C00905 = gdjkokgdldikhdddpjkkekgknesjikdkoioh


// Rich TextBox Control 6.0 license key
HKEY_CLASSES_ROOTLicensesDC4D7920-6AC8-11cf-8ADB-00AA00C00905 = iokouhloohrojhhhtnooiokomiwnmohosmsl


// Sheridan Tab Control license key
HKEY_CLASSES_ROOTLicenses190B7910-992A-11cf-8AFA-00AA00C00905 = gclclcejjcmjdcccoikjlcecoioijjcjnhng


// SysInfo Control 6.0 license key
HKEY_CLASSES_ROOTLicensesE32E2733-1BC5-11d0-B8C3-00A0C90DCA10 = kmhfimlflmmfpffmsgfmhmimngtghmoflhsg


// Winsock Control 6.0 license key
HKEY_CLASSES_ROOTLicenses2c49f800-c2dd-11cf-9ad6-0080c7e7b78d = mlrljgrlhltlngjlthrligklpkrhllglqlrk

mscomm详解

                      

MSComm控件两种处理通讯的方式  
CommPort
属性  
RThreshold  
属性  
CTSHolding  
属性  
SThreshold  
属性  
CDHolding  
属性  
DSRHolding  
属性  
Settings  
属性  
InputLen  
属性  
EOFEnable  
属性  
Handshake  
常数  
OnComm  
常数(事件)  
InputMode  
常数  
错误消息  


         MSComm
控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VCVBDelphi等语言中均可使用。  Microsoft  Communications  Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Eventdriven)方法,一是查询法。  

1.MSComm
控件两种处理通讯的方式  

MSComm
控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。    
1.1  
事件驱动方式  

事件驱动通讯是处理串行端口玉枕纱厨交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者  Carrier  Detect  (CD)    Request  To  Send  (RTS)  线上一个字符到达或一个变化发生时。在这些情况下,可以利用  MSComm  控件的  OnComm  事件捕获并处理这些通讯事件。OnComm  事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅  CommEvent  属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm  控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个  MSComm  控件。  

1.2  
查询方式    

查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查  CommEvent  属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的确定响应。    

2.MSComm  
控件的常用属性  
  MSComm
控件有很多重要的属性,但首先必须熟悉几个属性。  

CommPort  
设置并返回通讯端口号(端口号为1256的数字)
Settings  
以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。    
PortOpen  
设置并返回通讯端口的状态。也可以打开和关闭端口。    
Input     
从接收缓冲区返回和删除字符。


Inbuffersize 设置或返回接收缓冲区的大小,缺省值为1024字节。


Inbuffercount 返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓存区。


Output    向传输缓冲区写一个字符串。


outbfersize 设置或返回发送缓冲区的大小,缺省值为512字节。


outbuffercount 返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空发送缓存区。


 


下面分别描述:    

CommPort
属性  设置并返回通讯端口号。  
语法  object.CommPort[value  ]  (value  一整型值,说明端口号。)    
说明  在设计时,value  可以设置成从  1    16  的任何数(缺省值为  1)。但是如果用  PortOpen  属性打开一个并不存在的端口时,MSComm  控件会产生错误  68(设备无效)。  
注意:必须在打开端口之前设置  CommPort  属性。  

RThreshold  
属性:在  MSComm  控件设置  CommEvent  属性为  comEvReceive  并产生  OnComm  之前,设置并返回的要接收的字符数。  
语法  object.Rthreshold  [  =  value  ]value  整型表达式,说明在产生  OnComm  事件之前要接收的字符数。    
说明  当接收字符后,若  Rthreshold  属性设置为  0(缺省值)则不产生  OnComm  事件。例如,设置  Rthreshold    1,接收缓冲区收到每一个字符都会使  MSComm  控件产生  OnComm  事件。  

CTSHolding  
属性:确定是否可通过查询  Clear  To  Send  (CTS)  线的状态发送数据Clear  To  Send  是调制解调器发送到相联计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。  
语法:  object.CTSHoldingBoolean  

Mscomm  
控件的  CTSHolding  属性设置值:  
True  Clear  To  Send  
线为高电平。    
False  Clear  To  Send  
线为低电平。    

说明:如果  Clear  To  Send  线为低电平  (CTSHolding  =  False)  并且超时时,MSComm  控件设置  CommEvent  属性为  comEventCTSTO  (Clear  To  Send  Timeout)  并产生  OnComm  事件。  

Clear  To  Send  
线用于  RTS/CTS  (Request  To  Send/Clear  To  Send)  硬件握手。如果需要确定  Clear  To  Send  线的状态,CTSHolding  属性给出一种手工查询的方法。  

详细信息  有关握手协议,请参阅  Handshaking  属性。  

SThreshold  
属性:  MSComm  控件设置  CommEvent  属性为  comEvSend  并产生  OnComm  事件之前,设置并返回传输缓冲区中允许的最小字符数。  

语法  object.SThreshold  [  =  value  ]  
value  
整形表达式,代表在  OnComm  事件产生之前在传输缓冲区中的最小字符数。    

说明:若设置  Sthreshold  属性为  0(缺省值),数据传输事件不会产生  OnComm  事件。若设置  Sthreshold  属性为  1,当传输缓冲区完全空时,MSComm  控件产生  OnComm  事件。如果在传输缓冲区中的字符数小于  valueCommEvent  属性设置为  comEvSend,并产生  OnComm  事件。comEvSend  事件仅当字符数与  Sthreshold  交叉时被激活一次。例如,如果  Sthreshold  等于  5,仅当在输出队列中字符数从  5  降到  4  时,comEvSend  才发生。如果在输出队列中从没有比  Sthreshold  多的字符,comEvSend  事件将绝不会发生。  


Handshake  
常数  

常数    描述    
comNone  0  
无握手。    
comXonXoff  1  XOn/Xoff  
握手。    
comRTS  2  Request-to-send/clear-to-send  
握手。    
comRTSXOnXOff  3  Request-to-send  
  clear-to-send  握手皆可。    


OnComm  
常数  
如果通信过程中发生错误或事件就会引发oncomm事件
常数    描述    
comEvSend  1  
发送事件,发送缓冲区的内容少于sthreshold指定的值。
comEvReceive  2  
接收事件,接收缓存区内字符数达到rthreshold指定的值。    
comEvCTS  3  clear-to-send  
线变化。    
comEvDSR  4  data-set  ready  
线变化。    
comEvCD  5  carrier  detect  
线变化。    
comEvRing  6  
振铃检测。    
comEvEOF  7  
文件结束。(ASCII码为26)字符


Error  
常数  

常数    描述    
comEventBreak  1001  
接收到中断信号    
comEventCTSTO  1002  Clear-to-send  
超时    
comEventDSRTO  1003  Data-set  ready  
超时    
comEventFrame  1004  
帧错误    
comEventOverrun  1006  
端口超速    
comEventCDTO  1007  Carrier  detect  
超时    
comEventRxOver  1008  
接收缓冲区溢出    
comEventRxParity  1009  Parity  
错误,奇偶校验错误。    
comEventTxFull  1010  
传输缓冲区满    
comEventDCB  1011  
检索端口  设备控制块  (DCB)  时的意外错误    

InputMode  
常数  
常数    描述    
comInputModeText  0  
(缺省)通过  Input  属性以文本方式取回数据    
comInputModeBinary  1  
通过  Input  属性以二进制方式检取回数据    

CDHolding  
属性:通过查询  Carrier  Detect  (CD)  线的状态确定当前是否有传输。Carrier  Detect  是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。该属 
性在设计时无效,在运行时为只读。 

语法 object.CDHolding 
设置值:CDHolding 属性的设置值为: 
设置 描述 
True Carrier Detect 
线为高电平 
False Carrier Detect 
线为低电平 
说明:注意当 Carrier Detect 线为高电平 (CDHolding = True) 且超时时,MSComm 控件 
设置CommEvent 属性为 comEventCDTOCarrier Detect 超时错误),并产生 OnComm  
件。 
注意 在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者 
可以随时挂起(放弃传输)。 
Carrier Detect 
也被称为 Receive Line Signal Detect (RLSD) 
数据类型 Boolean 

DSRHolding 
属性:确定 Data Set Ready (DSR) 线的状态。Data Set Ready 信号由调制 
解调器发送到相连计算机,指示作好操作准备。该属性在设计时无效,在运行时为只读。 
语法:object.DSRHolding 
object 
所在处表示对象表达式,其值是“应用于”列表中的对象。 
DSRHolding 
属性返回以下值: 
 描述 
True Data Set Ready 
线高 
False Data Set Ready 
线低 
说明:当 Data Set Ready 线为高电平 (DSRHolding = True) 且超时时,MSComm 控件设 
 CommEvent 属性为 comEventDSRTO(数据准备超时)并产生 OnComm 事件。 
当为 Data Terminal Equipment (DTE) 机器写 Data Set Ready/Data Terminal Ready  
手例程时该属性是十分有用的。 
数据类型:Boolean 


Settings 
属性设置并返回波特率、奇偶校验、数据位、停止位参数。 

语法: object.Settings[ = value] 
说明:当端口打开时,如果 value 非法,则 MSComm 控件产生错误 380(非法属性值)。 

value 
由四个设置值组成,有如下的格式: 
"BBBB,P,D,S" 
BBBB 
为波特率,为奇偶校验,为数据位数,为停止位数。value 的缺省值是: 
"9600,N,8,1" 
N无校验,E偶校验,O奇校验

InputLen 
属性:设置并返回 Input 属性从接收缓冲区读取的字符数。 

语法 object.InputLen [ = value] 
InputLen 
属性语法包括下列部分: 
value 
整型表达式,说明 Input 属性从接收缓冲区中读取的字符数。 
说明:InputLen 属性的缺省值是 0。设置 InputLen  0 时,使用 Input 将使 
MSComm 
控件读取接收缓冲区中全部的内容。 

若接收缓冲区中 InputLen 字符无效,Input 属性返回一个零长度字符串 ("")。在使用 
Input 
前,用户可以选择检查 InBufferCount 属性来确定缓冲区中是否已有需要数目的字 
符。该属性在从输出格式为定长数据的机器读取数据时非常有用。 


EOFEnable 
属性:确定在输入过程中 MSComm 控件是否寻找文件结尾 (EOF) 字符。如果找 
 EOF 字符,将停止输入并激活 OnComm 事件,此时 CommEvent 属性设置为 comEvEOF 

语法:object.EOFEnable [ = value ] 
EOFEnable 
属性语法包括下列部分: 
value 
布尔表达式,确定当找到 EOF 字符时,OnComm 事件是否被激活,如“设置值”中 
所描述。 
value 
的设置值: 
True 
 EOF 字符找到时 OnComm 事件被激活。 
False 
(缺省)当 EOF 字符找到时 OnComm 事件不被激活。 
说明:当 EOFEnable 属性设置为 FalseOnComm 控件将不在输入流中寻找 EOF 字符。 


错误消息(MS Comm 控件) 


下表列出 MSComm 控件可以捕获的错误: 

 描述 
380 无效属性值 comInvalidPropertyvalue 
383 属性为只读 comSetNotSupported 
394 属性为只读 comGetNotSupported 
8000 端口打开时操作不合法 comPortOpen 
8001 超时值必须大于 0 
8002 无效端口号 comPortInvalid 
8003 属性只在运行时有效 
8004 属性在运行时为只读 
8005 端口已经打开 comPortAlreadyOpen 
8006 设备标识符无效或不支持该标识符 
8007 不支持设备的波特率 
8008 指定的字节大小无效 
8009 缺省参数错误 
8010 硬件不可用(被其它设备锁定)
8011 函数不能分配队列
8012 设备没有打开 comNoOpen
8013 设备已经打开
8014 不能使用 comm 通知
8015 不能设置 comm 状态 comSetCommStateFailed
8016 不能设置 comm 事件屏蔽
8018 仅当端口打开时操作才有效 comPortNotOpen
8019 设备忙
8020  comm 设备错误 comReadError
8021 为该端口检索设备控制块时的内部错误 comDCBError 

mscomm使用时必须先设置端口参数后打开端口,否则将出现端口打开错误

could not open configuration filed [原]

       在现在计算机飞速发展的今天,接入互联网是当今所有计算机使用者必不可少的一个话题。而如今为了共享计算机网络资源(共享宽带)已经出现了非常多的上网方式,最简单的就是共享试网络主要原理是将共享网络中的一台计算机设置为拨号上网,然后共享拨号连接使其他计算机也能够在不需要增加宽带申请费用就能简单的共享上网乐趣。再复杂一点就使是配置adsl路由,这种听起来好像有点困难因为想到路由一般不是专门搞网络的人都觉得头大。第三种比较流行的上网方式就是使用代理服务器,虽然很多代理服务器都支持ie代理在不安装代理客户端的计算机上只要把ie和本地连接设置好就可以上网。可是只有上网功能并不能满足所有人的需要,更多人想通过互连网看电影打游戏等更方便的服务。而安装了代理客户端后就就基本上能满足我们在互联网上的基本需求。
       在我们使用代理客户端时经常会出现一些莫名奇妙的问题,但是问题解决办法有在网上找不到所以我就我使用代理客户端permeo security driver 4.22 (psd)时出现的一些故障以及我的解决办法分享给大家,希望能给大家带来一点帮助。
      使用psd时经常会出现网页打不开,但把代理客户端停止后用ie的代理设置时能够正常使用。第一次出现这个问题的时候我不知道怎么解决但是不加代理客户端时无法使用odbc所以就重做了操作系统,重做操作系统当然是很麻烦的事我现在最愁的就是做操作系统虽然会用一些工具把操作系统的安装时间减到10分钟但是计算机配置还是很麻烦的。后来发现出现这个问题的原因是计算机里面的一个服务停掉了,服务名是Security Driver NetBT Proxy然后启用服务就好了,这个问题可以说是得到了解决。还有一次出现了新的问题代理客户端正常启动它的依托服务也很正常但是代理客户端不起作用了,为次我从装了好多次代理客户端但是结果都没办法改变,最后从代理客户端的帮助文档中找到一条说代理客户端要进行配置文件导入和导出当然我的英文不是很好只看懂是导入导出的意思,我打开代理客户端的用户配置界面发现general页中in office后面的edit按钮打不开点击时出现错误提示:could not open configuration filed原来是配置文件有问题了.我的计算机使用的用户是用超级管理员创建的管理员用户,所以我就重新用超级管理员用户登陆,打开代理客户端配置发现可以正常使用所以就用代理客户端的工具administrator's tool将代理客户端的配置导出一份到c:abc.txt,重新进入计算机管理员用户后用同样的工具将abc.txt导入代理客户端一切使用正常。当然如果你的代理客户端现在使用正常的话可以将现在的配置文件导出备份到一个文件中如果代理客户端出现问题了可以导入重新导入。当然如果你的计算机代理客户端出现问题也可以将其他计算机上的可以正常使用的代理客户配置文件导入到你的代理客户端中。
       如果有什么问题可以给我留言,欢迎大家和我一起交流网管经验。

我在使用Microsoft Visual Studio 2003 c# 设计器时遇到的问题[原]

1.计算机调试管理服务器被禁用

        解决办法
        管理工具->计算机->服务,应该启用“Machine Debug Manager”服务就可以了吧。把它的启动方式改为手动或自动。