با سلام .
من توسط برنامه اي در پايين ضميمه كردم اطلاعات رو از باسكول ميخونم .
حالا مشكلم اينه كه ميخوام هر وقت وزن ثابت شد ؛ وزن رو برام تويه فايل Text بريزه .
دوستان ميتونن راهنمايي كنن ؟
با سلام .
من توسط برنامه اي در پايين ضميمه كردم اطلاعات رو از باسكول ميخونم .
حالا مشكلم اينه كه ميخوام هر وقت وزن ثابت شد ؛ وزن رو برام تويه فايل Text بريزه .
دوستان ميتونن راهنمايي كنن ؟
دوستان کسی نمیتونه من روراهنمایی کنه ؟
مشکل من تو ثابت شدن وزنه که چطور با کدنویسی متوجه بشم که وزن ثابت شده ؟!!!
چون از همون اول که ماشین رویه باسکول میاد شروع میکنه که نشون دادن از صفر تا وزن اصلی
خب 5 وزن آخر رو ذخیره کن و هر وقت برابر بودن و یا اختلاف خیلی خیلی کم داشتن اون وزن اصلی هست ...
میتونی بگی چطوری این کار رو بکنم ؟
با تایمر زمانبندی 1 ثانیه
شما می تونی با زمان بندی که دوستمون گفتن وزن رو هر لحظه آپدیت کنی بعد موقع آپدیت چک کنه که مقدار وزن ها برابره اگه برابر بود وزن نهایی رو ثبت کنه
با سلام مجدد به همه ي دوستان
دقيقا بگم كه من دقيقا حرف دوستان رو متوجه نشدم كه چي ميگن
و اگه دقيقا يه تيكه كد واسه راهنماييم بنويسن ممنون ميشم
من از كد پايين واسه گرفتن وزن از باسكول استفاده كردم
ولي اينكه كي بفهمم وزن ثابت شده و وقتي ثابت شد در يه فايل تكست تويه مثلا درايو C بريزه رو نميدونم
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace serialtest
{
public partial class Form1 : Form
{
string StrRecieve;
public Form1()
{
InitializeComponent();
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void DisplayText(object sender, EventArgs e)
{
textBox2.AppendText(StrRecieve);
}
private void btnOpen_Click(object sender, EventArgs e)
{
serialPort1.DataBits = 8;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.BaudRate = 9600;
serialPort1.PortName = "COM1";
serialPort1.Open();
btnOpen.Enabled = false;
btnClose.Enabled = true;
}
private void btnClosePort_Click(object sender, EventArgs e)
{
btnOpen.Enabled = true;
serialPort1.Close();
MessageBox.Show("PORT Closed", "OK", MessageBoxButtons.OK);
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
StrRecieve = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}
private void Form1_Load(object sender, EventArgs e)
{
btnClose.Enabled = false;
}
}
}
برنامه رو هم ميزارم
با 2008 نوشتم
سلام میشه بیشتر از برنامه ات بگی ، چهطوری از باسکول میخونه . باسکول به کجا وصل و..........
با سلام
من این برنامه رو از روی پی دی افی که در زیر گذاشتم نوشتم
باسکول وصله به دستگاه نشان دهنده ی باسکول و من دستگاه نشان دهنده رو با کابل RS23 وصل کردم به به سیستم و الباقی هم که کدهست که به راحتی از باسکول میخونه
فقط مشکل من اینجاست که نمیدونم باید چیکار کنم که بفهمم وزن ثابته و همین که وزن ثابت شد بریزمش تویه یه فایل تکست
فقط وزن رو بریزه تویه فایل تکست و هر بار OverWrite بشه
یعنی در هر لحظه فقط یک وزن داخل فایل تکست باشه
دوستان منتظرم
http://s5.picofile.com/file/81078373...rning.rar.html
یه جایه دیگه هم آپلود میکنم تا دوستان راحت تر باشن
http://Trainbit.com/files/3348969884/SerialLearning.rar
آخرین ویرایش به وسیله jafarpalideh : چهارشنبه 18 دی 1392 در 07:34 صبح
سلام
برای این کار من یک پیشنهاد دارم البته لازمه اش اینه که تست کنی
ابتدا یک آرایه از نوع عددی بعنوان بافر تعریف کن و هر لحظه عدد وارد شده رو بریز تو آرایه (این آرایه میتواند محدود یا بی نهایت باشد)
بعد توزین که تموم شده ، ماکزیمم عدد های وارد شده در این آرایه همون وزن اصلی شماست
موفق باشید
ابتدا یک تایمر با اینتر ول 1000 یا 500
سپس یک متغیر عمومی بعنوان ایندکس و یک آرایه عددی بعنوان بافر تعریف کن
استارت تایمر باید همزمان با شروع بکار باسکول آغاز شود
public int[] buffer = new int[255];
public static int i ;
private void timer1_Tick(object sender, EventArgs e)
{
if (i == 255)
{
i = 0;
}
buffer.SetValue(Int32.Parse(textBox1.Text), i);
i++;
}
سپس برای گرفتن وزن:
timer1.Enabled = false;
int maxVal = 0;
for (int j = 0; j < buffer.Length; j++)
{
int thisNum = buffer[j];
if ( thisNum > maxVal)
{
maxVal = thisNum;
}
}
MessageBox.Show(Convert.ToString( maxVal));
آخرین ویرایش به وسیله shahryari : چهارشنبه 18 دی 1392 در 11:58 صبح
مرسی عالی بود Shahryar عزیر.
فقط یک سوال .
من میخوام که اطلاعاتم رو درون یک فایل تکس بریزم .
کلا بزار بگم میخوام چیکار کنم .
میخوام که هرروز صبح کاربر نرم افزار رو اجرا کنه و نرم افزار اتوماتیک وزن رو بخونه و تویه یه فایل تکست بریزه . یعنی هر بار که ماشینی میاد رویه باسکول وزن رو رویه وزن قبلی OverWrite کنه .
کلا کارش این باشه که هر بار که ماشینی میاد رویه باسکول ، وزن رو بخونه و بریزه تویه فایل تکست .
شرمنده دارم اینقدر اذیتت میکنم
سلام
در قسمت دوم کدهای بالا ، وزن نهایی را با مسیج باکس نمایش میدهد برای ثبت آن در فایل از کدهای زیر استفاده کنید:
timer1.Enabled = false;
int maxVal = 0;
for (int j = 0; j < buffer.Length; j++)
{
int thisNum = buffer[j];
if ( thisNum > maxVal)
{
maxVal = thisNum;
}
}
string FileName = Application.StartupPath + "\\vazn.txt";
string finalVazn = Convert.ToString( maxVal);
System.IO.File.WriteAllText(FileName, finalVazn);
با سلام مجدد
من وقتي وزن رو ميخونم به اينصورت ميخونه
P+0000 P+0000 P+0000 P+0000 P+0000 P+0000 P+0000 P+0000البته الان چيزي روش قرار نداره و وزن رو صفر نشون ميده
و كد بالا عملا جواب نميده
Shahryar عزيز يا دوستان ديگه ميتونن من رو راهنمايي كن ؟
يه عكس هم ميزارم
سلام منظورت اینه که میخوای فقط عدد باشه و اون p رو نشون نشده؟
سلام
کد اون قسمتی رو که داره وزن رو میخونه بذار
دقیقا کد کامل رو بالا گذاشتم
سلام مجدد
با توجه به کدهای پست 7 این کدرو پیدا کنید و بشکل زیر اصلاح کنید
private void DisplayText(object sender, EventArgs e)
{
textBox2.Text = StrRecieve.Replace ("p+","").Trim();
}
آخرین ویرایش به وسیله shahryari : یک شنبه 22 دی 1392 در 11:05 صبح