1. sayfa (Toplam 1 sayfa)

Beijer Seri Port üzerinden byte gönderme

Gönderilme zamanı: 24 Ağu 2022, 22:51
gönderen CodSys
Merhabalar;

Beijer x2 base 10v2 ekranda şöyle bir sıkıntım var yardımcı olursanız çok sevinirim...

ekrana serialden istediğim gibi data gönderiyorum 32byte alıp ekranda işliyorum sıkıntı yok ama ekrandan dışarı data gönderirken sıkıntı yaşıyorum.
Mesela 1 byte yolladığımda örnek bu 127 olsun 1 byte olarak değil de 3 byte olarak çıkıyor 1-2-7 gibi bununla ilgili bana yardımcı olabilecek biri var mı varsa çok sevinirim...

Yaklaşık 100 byte veri çıkışı yapmam lazım ekrandan bu sıkıntıdan dolayı sağlıklı veri transferi yapamıyorum.

Kullandığım script:

Kod: [Linkleri görüntülemek için forumumuza üye olmalısınız]

namespace Neo.ApplicationFramework.Generated
{
	using System.Windows.Forms;
	using System;
	using System.Drawing;
	using Neo.ApplicationFramework.Tools;
	using Neo.ApplicationFramework.Common.Graphics.Logic;
	using Neo.ApplicationFramework.Controls;
	using Neo.ApplicationFramework.smile;
	using System.IO.Ports;   
	

	public partial class SerialComScript
	{
		public static SerialCom serialCom = null;
		
		static SerialComScript() 
		{
			serialCom = new SerialCom();
		} 
		
		public void Send(string data)
		{
			serialCom.SendData(data);
		}
	}
	
	public class SerialCom
	{ 
		public SerialPort sPort = null;
		private Timer myTimer = new Timer();
		
		public SerialCom()
		{
			sPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
			sPort.Open();
			
			myTimer.Tick += new EventHandler(TimerEventProcessor);
			myTimer.Interval = 100;
			myTimer.Enabled = true;
		}
		
		public void SendData(string outData) 
		{
			sPort.Write(outData);
		}

		private void TimerEventProcessor(Object myObject, EventArgs myEventArgs) 
		{
			Globals.SerialComScript.Send("@");

			try
			{
				byte x=0;	
				int BytesReceived;
				byte[] BusMsg;
				int devir_new ;

				BytesReceived = sPort.BytesToRead;
				if (BytesReceived == 0) return;
            
				BusMsg = new byte[BytesReceived];
				sPort.Read(BusMsg, 0, BytesReceived);
				Globals.Tags.Tag1.Value = BusMsg[1] * 1;
			
			}	

			catch(Exception){return;}		
		}		
	}
}

Re: Beijer Seri Port üzerinden byte gönderme

Gönderilme zamanı: 25 Ağu 2022, 10:49
gönderen Teknik3
merhabalar.

Veri gönderirken 1 byte yerine 3 bayte gitmesinin nedeni veriyi sayı olarak değil String "yazı" olarak göndermeniz.
çünkü göndermiş olduğunzu script içerisinde sadece String ile gönderme yapan bir fonksiyon tanımı var.

Kod: [Linkleri görüntülemek için forumumuza üye olmalısınız]

public void SendData(string outData) 
		{
			sPort.Write(outData);
		}
SendData("123") şeklinde gönderdiğiniz veri String olarak gönderdiğiniz için 1 byte değil 3 byte oluyor.
Seri porttan byte göndermek için aşağıdaki fonksiyon tanımını String gönderen fonksiyon tanımının atına ekleyin.

Kod: [Linkleri görüntülemek için forumumuza üye olmalısınız]

public void SendByte(byte outData) 
		{
			sPort.Write(outData);
		}
böylece SendByte((byte)127) diyerek veri gönderebilirsiniz.

Re: Beijer Seri Port üzerinden byte gönderme

Gönderilme zamanı: 01 Eyl 2022, 19:17
gönderen CodSys
Merhaba;
Vermiş olduğunuz bilgilerden dolayı teşekkür ederim.

Lakin şu şekilde sorun ile karşılaşmaktayım,

Kod: [Linkleri görüntülemek için forumumuza üye olmalısınız]

public void SendByte (byte[] buffer)
		{
			sPort.Write(buffer, 0, buffer.Length);
			//sPort.Write(byte[] buffer, 0, buffer.Length);
			//sPort.Write((byte) buffer);
		}
		
		byte[] ss;
		ss[0] = Globals.Tags.test.Value * 1;
		SendByte(ss);
Düzenlememi yaptım ama hala hata alıyorum

Kod: [Linkleri görüntülemek için forumumuza üye olmalısınız]

neo.applicationFramework.smile.VariantValue' türü örtülü olarak 'byte' türüne dönüştürülemez.
bu aşamayı bir türlü geçemedim.
Amacım global Tags'ları byte olarak serialden göndermek
SendByte((byte)127);
Vermiş olduğunuz örnegide denedim yine byte türüne dönüştürülemez demektedir seriport'tan nasıl 1 byte veri göndereceğim bilemedim...

Re: Beijer Seri Port üzerinden byte gönderme

Gönderilme zamanı: 02 Eyl 2022, 14:53
gönderen Teknik3
Bu örneği inceler misiniz.
Project8.zip

Re: Beijer Seri Port üzerinden byte gönderme

Gönderilme zamanı: 02 Eyl 2022, 23:46
gönderen CodSys
[Linkleri görüntülemek için forumumuza üye olmalısınız] yazdı: [Linkleri görüntülemek için forumumuza üye olmalısınız]
02 Eyl 2022, 14:53
Bu örneği inceler misiniz.
Project8.zip
Vermiş olduğunuz örnek proje ile sorunum çözüldü çok teşekkür ederim...
İyi çalışmalar dilerim...