PDA

View Full Version : سوال: تبدیل یه تکه کد c# به فاکس



nima_8m
شنبه 10 آذر 1397, 15:16 عصر
سلام به اساتید گرامی
من یه تکه کد دارم به #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;

namespace MeterTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

delegate void setmeter(string txt);

private void SetM(string m)
{
if (textBox4.InvokeRequired)
{
setmeter d = new setmeter(SetM);
Invoke(d, new object[] {m});
textBox4.Text = m;
}
else
{
textBox4.Text = m;
}
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void button1_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}

serialPort1.PortName = textBox1.Text;
serialPort1.BaudRate = int.Parse(textBox2.Text);
serialPort1.Open();
timer1.Enabled = true;

}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void button2_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}

timer1.Enabled = false;

}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
string ss = serialPort1.ReadLine();
Application.DoEvents();
SetM(ss);
Application.DoEvents();

}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void timer1_Tick(object sender, EventArgs e)
{
//textBox4.Text= serialPort1.ReadLine();
// Application.DoEvents();
// Application.DoEvents();

}

private void button3_Click(object sender, EventArgs e)
{
try
{
Application.DoEvents();
serialPort1.WriteLine(textBox3.Text);
Application.DoEvents();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
}
}

farhad_shiri_ex
شنبه 10 آذر 1397, 16:32 عصر
سلام به اساتید گرامی
من یه تکه کد دارم به #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;

namespace MeterTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

delegate void setmeter(string txt);

private void SetM(string m)
{
if (textBox4.InvokeRequired)
{
setmeter d = new setmeter(SetM);
Invoke(d, new object[] {m});
textBox4.Text = m;
}
else
{
textBox4.Text = m;
}
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void button1_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}

serialPort1.PortName = textBox1.Text;
serialPort1.BaudRate = int.Parse(textBox2.Text);
serialPort1.Open();
timer1.Enabled = true;

}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void button2_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}

timer1.Enabled = false;

}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
string ss = serialPort1.ReadLine();
Application.DoEvents();
SetM(ss);
Application.DoEvents();

}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}

private void timer1_Tick(object sender, EventArgs e)
{
//textBox4.Text= serialPort1.ReadLine();
// Application.DoEvents();
// Application.DoEvents();

}

private void button3_Click(object sender, EventArgs e)
{
try
{
Application.DoEvents();
serialPort1.WriteLine(textBox3.Text);
Application.DoEvents();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
}
}




سلام وقت بخیر!
حالا کاری نداریم به آبجکتهای روی فرم (البته نه این که نشه تبدیل به وی فاکس کرد)
ولی برای استفاده از این کلاس (new System.IO.Ports.SerialPort(this.components چی کار میخواهی بکنی؟
3تا راه داری
1- همین کلاس serialport را به صورت dll که با تکنولوژی com کامپایل شده باشه پیدا کنی و در وی فاکس استفاده کنی.
2- ویا همین کلاس serialport را به صورت dll با همین تکنولوژی دات نت کامپایل کنی ولی باید با استفاده از کتابخانه دات نت بریج تو وی فاکس استفاده کنی.
3- حالا اگر نتونی مستقیم کلاس serialport را به dll تبدیل کنی باید همین برنامه ای که تو #c داری را به dll کامپایل کنی و تو وی فاکس با استفاده از دات نت بریج استفاده کنی.
در صورتی که موفق شدی به تبدیل dll برای استفاده از دات نت بریج پیغام خصوص بده !

nima_8m
شنبه 10 آذر 1397, 20:13 عصر
من تو این برنامه ترازو هم دارم که با پورت کام به سیستم وصل میشه و بدون مشکل اطلاعات رو دریافت میکنم که در پایان کد رو هم اضافه میکنم ملاحظه بفرمایید
طبق گفته فروشنده این دستگاه با پورت usb متصل میشه اما مثل پورت کام باید باهاش ارتباط برقرار کرد


IF thisform.check1.value=1
wight_tar = FOPEN('COM1', 12)
IF wight_tar<>50 .AND. wight_tar<>-1
wight_c = FREAD(wight_tar, 8)
FCLOSE(wight_tar)
PUBLIC a[3]
FOR i = 1 TO 3
a[i] = ASC(SUBSTR(wight_c, AT('�', wight_c)+i, 1))
a[i] = dec2hex(a(i))
ENDFOR
result = a(1)+a(2)+a(3)
RELEASE a
result = VAL(result)/1000
SELECT baste_t
REPLACE wight WITH result
ELSE
SELECT baste_t
result = 0
REPLACE wight WITH 0
MESSAGEBOX("", 48)
ENDIF