alirezavafi
چهارشنبه 23 خرداد 1386, 17:18 عصر
این کدها با دو نوع از باسکولهای شرکت توزین الکتریک تست شده است.
این باسکول ها مکرراً 5 بایت به کامپیوتر ارسال می کنند.
برای ارتباط با باسکول باید از mscomm32 برای ارتباط با پورت سریال استفاده کرد.
طریقه وارد کردن اکتیو ایکس Mscomm32 به فرم برای خواندن اطلاعات از باسکول :
از جعبه ابزار گزینه OLE را انتخاب ، سپس گزینه
Microsoft Communication Control,version 6.0
را انتخاب کنید و آنرا مطابق زیر تنظیم کنید.
CommPort = 2<-- اگر از کام دو استفاده می کنید
InBufferSize = 1024
InputLen = 5
InputMode = 0 – text
Name = UseCom1
Rthreshold = 5
Settings = 9600,e,8,2
دقت کنید که در رویداد show فرم باید کام را بصورت زیر باز کنید:
thisform.usecom1.portopen = .t.
و در پایان کار نیز (در رویداد release فرم) ببندید:
thisform.usecom1.portopen = .f.
سپس با وارد کردن کدهای زیر در رویداد oncomm اکتیو ایکس مورد نظر که آنرا usecom1 نامیدیم با هر بار ورود اطلاعات را کنترل می نماییم و وزن حاصله را نمایش می دهیم :
متغیرهای برنامه
B1c وزن فعلی باسکول است.
B13a چک می کند وزن منفی است یا نه.
B15 , B16 , B17 حاوی وزن باسکول به همراه یک رقم اعشار می باشد.
فانکشنهای استفاده شده در برنامه
BitLshift شیفت بیها به چپ
Asc تبدیل به کد اسکی
Substr دریافت یک تکه از رشته مورد نظر
کدهایی که باید در رویداد oncomm اکتیو ایکس usecom1 نوشته شوند.
set talk off
set decimals to 1
set fixed on
b1a = thisform.usecom1.input
*b10a = val(substr(num2bin(asc(substr(b1a,1,1)),8),4,1))
*b10b = val(substr(num2bin(asc(substr(b1a,1,1)),8),2,1))
*b11 = num2bin(asc(substr(b1a,1,1)),8)
b12 = num2bin(asc(substr(b1a,2,1)),8)
b13a = val(substr(b12,5,1))
*b14 = bitlshift(asc(substr(b12,6,3)),21)
b15 = bitlshift(asc(substr(b1a,3,1)),14)
b16 = bitlshift(asc(substr(b1a,4,1)),7)
b17 = asc(substr(b1a,5,1))
b1c = (b15+b16+b17) / 10
if b13a = 1
b1c = b1c * -1
endif
thisform.text2.Value = b1c
********************
ar.vafi@gmail.com
این باسکول ها مکرراً 5 بایت به کامپیوتر ارسال می کنند.
برای ارتباط با باسکول باید از mscomm32 برای ارتباط با پورت سریال استفاده کرد.
طریقه وارد کردن اکتیو ایکس Mscomm32 به فرم برای خواندن اطلاعات از باسکول :
از جعبه ابزار گزینه OLE را انتخاب ، سپس گزینه
Microsoft Communication Control,version 6.0
را انتخاب کنید و آنرا مطابق زیر تنظیم کنید.
CommPort = 2<-- اگر از کام دو استفاده می کنید
InBufferSize = 1024
InputLen = 5
InputMode = 0 – text
Name = UseCom1
Rthreshold = 5
Settings = 9600,e,8,2
دقت کنید که در رویداد show فرم باید کام را بصورت زیر باز کنید:
thisform.usecom1.portopen = .t.
و در پایان کار نیز (در رویداد release فرم) ببندید:
thisform.usecom1.portopen = .f.
سپس با وارد کردن کدهای زیر در رویداد oncomm اکتیو ایکس مورد نظر که آنرا usecom1 نامیدیم با هر بار ورود اطلاعات را کنترل می نماییم و وزن حاصله را نمایش می دهیم :
متغیرهای برنامه
B1c وزن فعلی باسکول است.
B13a چک می کند وزن منفی است یا نه.
B15 , B16 , B17 حاوی وزن باسکول به همراه یک رقم اعشار می باشد.
فانکشنهای استفاده شده در برنامه
BitLshift شیفت بیها به چپ
Asc تبدیل به کد اسکی
Substr دریافت یک تکه از رشته مورد نظر
کدهایی که باید در رویداد oncomm اکتیو ایکس usecom1 نوشته شوند.
set talk off
set decimals to 1
set fixed on
b1a = thisform.usecom1.input
*b10a = val(substr(num2bin(asc(substr(b1a,1,1)),8),4,1))
*b10b = val(substr(num2bin(asc(substr(b1a,1,1)),8),2,1))
*b11 = num2bin(asc(substr(b1a,1,1)),8)
b12 = num2bin(asc(substr(b1a,2,1)),8)
b13a = val(substr(b12,5,1))
*b14 = bitlshift(asc(substr(b12,6,3)),21)
b15 = bitlshift(asc(substr(b1a,3,1)),14)
b16 = bitlshift(asc(substr(b1a,4,1)),7)
b17 = asc(substr(b1a,5,1))
b1c = (b15+b16+b17) / 10
if b13a = 1
b1c = b1c * -1
endif
thisform.text2.Value = b1c
********************
ar.vafi@gmail.com