Hi,
OOPic III+ Ver C.1.1+ Compiler 6.1.1
I thought I'd try this again with the dot format that Richard
suggested. I'm supplying a simplified C# code. (Fingers crossed
here)
The OOPic code:
Dim firstByte As Byte
Dim secondByte As Byte
Dim thirdByte As Byte
Dim firstWord As Word
Dim secondWord As Word
Sub Main()
..firstByte = 15 '0F hex
..secondByte = 171 'AB hex
..thirdByte = 205 'CD hex
..firstWord = 4660 '1234 hex
..secondWord = 43981 'ABCD hex
End Sub
The output:
firstByte - sent: 16H105J64LM received: 77m
secondByte - sent: 16H106J64LM received: 33m
thirdByte - sent: 16H107J64LM received: 40m
firstWord - sent: 17H108J64LM received: 116Cm
secondWord - sent: 17H108J64LM received: 116Cm
The C# code:
public partial class Form1 : Form
{
..delegate void SetTextCallback(string text);
..private string currentObjName = null; // prevent race
..private string response = null;
..private string errorRet = null;
..private void Form1_Load(object sender, EventArgs e)
..{
....string content;
....DateTime startTime;
....try
....{
......serialPort1.Open();
......currentObjName = "setup"; // race lock on
......response = null;
......serialPort1.Write(@"\0"); // connect node 0
......serialPort1.Write(@"v"); // verify connection
......// wait for a response
......while (response == null || response.Length == 0) { }
......Console.WriteLine(response);
......serialPort1.Write(@"U"); // acknowlege off
......currentObjName = null; // race lock off
......// Read firstByte
......response = null; // re-init
......content = @"16H"; // memory type read/write RAM
......content += @"105J"; // memory address of firstByte
......content += @"64L"; // sub memory bank 1
......content += @"M"; // read memory
......currentObjName = "firstByte"; // race lock on
......serialPort1.Write(content); // send instructions
......// wait for a response
......startTime = DateTime.Now;
......while ((response == null && errorRet == null)
........|| (response != null
..........&& !response.EndsWith("m")
..........&& !response.Contains("*")))
......{
........if (startTime.AddMilliseconds(1000) < DateTime.Now)
........{
..........throw new Exception("timed out");
........}
......}
......currentObjName = null; // race lock off
......// print response
......if (response != null)
......{
........Console.WriteLine("firstByte - sent: "
..........+ content + " received: " + response);
......}
......// Read secondByte
......response = null; // re-init
......content = @"16H"; // memory type read/write RAM
......content += @"106J"; // memory address of secondByte
......content += @"64L"; // sub memory bank 1
......content += @"M"; // read memory
......currentObjName = "secondByte"; // race lock on
......serialPort1.Write(content); // send instructions
......// wait for a response
......startTime = DateTime.Now;
......while ((response == null && errorRet == null)
........|| (response != null
..........&& !response.EndsWith("m")
..........&& !response.Contains("*")))
......{
........if (startTime.AddMilliseconds(1000) < DateTime.Now)
........{
..........throw new Exception("timed out");
........}
......}
......currentObjName = null; // race lock off
......// print response
......if (response != null)
......{
........Console.WriteLine("secondByte - sent: "
..........+ content + " received: " + response);
......}
......// Read thirdByte
......response = null; // re-init
......content = @"16H"; // memory type read/write RAM
......content += @"107J"; // memory address of thirdByte
......content += @"64L"; // sub memory bank 1
......content += @"M"; // read memory
......currentObjName = "thirdByte"; // race lock on
......serialPort1.Write(content); // send instructions
......// wait for a response
......startTime = DateTime.Now;
......while ((response == null && errorRet == null)
........|| (response != null
..........&& !response.EndsWith("m")
..........&& !response.Contains("*")))
......{
........if (startTime.AddMilliseconds(1000) < DateTime.Now)
........{
..........throw new Exception("timed out");
........}
......}
......currentObjName = null; // race lock off
......// print response
......if (response != null)
......{
........Console.WriteLine("thirdByte - sent: "
..........+ content + " received: " + response);
......}
......// Read firstWord
......response = null; // re-init
......content = @"17H"; // memory type read/write RAM two bytes
......content += @"108J"; // memory address of firstWord
......content += @"64L"; // sub memory bank 1
......content += @"M"; // read memory
......currentObjName = "firstWord"; // race lock on
......serialPort1.Write(content); // send instructions
......// wait for a response
......startTime = DateTime.Now;
......while ((response == null && errorRet == null)
........|| (response != null
..........&& !response.EndsWith("m")
..........&& !response.Contains("*")))
......{
........if (startTime.AddMilliseconds(1000) < DateTime.Now)
........{
..........throw new Exception("timed out");
........}
......}
......currentObjName = null; // race lock off
......// print response
......if (response != null)
......{
........Console.WriteLine("firstWord - sent: "
..........+ content + " received: " + response);
......}
......// Read secondWord
......response = null; // re-init
......content = @"17H"; // memory type read/write RAM two bytes
......content += @"108J"; // memory address of secondWord
......content += @"64L"; // sub memory bank 1
......content += @"M"; // read memory
......currentObjName = "secondWord"; // race lock on
......serialPort1.Write(content); // send instructions
......// wait for a response
......startTime = DateTime.Now;
......while ((response == null && errorRet == null)
........|| (response != null
..........&& !response.EndsWith("m")
..........&& !response.Contains("*")))
......{
........if (startTime.AddMilliseconds(1000) < DateTime.Now)
........{
..........throw new Exception("timed out");
........}
......}
......currentObjName = null; // race lock off
......// print response
......if (response != null)
......{
........Console.WriteLine("secondWord - sent: "
..........+ content + " received: " + response);
......}
......serialPort1.Close();
....}
....catch (Exception ex)
....{
......if (serialPort1.IsOpen)
......{
........serialPort1.Close();
......}
......Debug.WriteLine(ex.ToString());
....}
..}
..private void serialPort1_DataReceived(
....object sender,
....System.IO.Ports.SerialDataReceivedEventArgs e)
..{
....// called on different thread
....if (currentObjName == null)
....{
......throw new Exception("unexpected data");
....}
....response += serialPort1.ReadExisting();
..}
..private void serialPort1_ErrorReceived(
....object sender,
....System.IO.Ports.SerialErrorReceivedEventArgs e)
..{
....// called on different thread
....if (currentObjName == null)
....{
......throw new Exception("unexpected data");
....}
....errorRet += e.ToString();
..}
}
[Non-text portions of this message have been removed]
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/oopic/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/oopic/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:oopic-digest@yahoogroups.com
mailto:oopic-fullfeatured@yahoogroups.com
<*> To unsubscribe from this group, send an email to:
oopic-unsubscribe@yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/