processing / processing/processing-website

Serial.write documentation errors.

Đang mở
#352 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
MDX
Star
90
Fork
122
Merge trung bình
1 giờ 43 phút
Pull request đã merge (30 ngày)
3

Mô tả

Description

  1. The reference for Serial.write implies that you can have one or more parameters of type byte[], String or int. As far as I can see it accepts only one parameter (of any of those types).

The method write(int) in the type Serial is not applicable for the arguments (String, int)
The method write(int) in the type Serial is not applicable for the arguments (int, String)

  1. Serial.write with integer parameter sends only the least-significant byte.

Assuming that serial.write(int-var) is valid, although not an example in Processing-4 (it was an example in Processing-3). It sends only the least-sig byte. Maybe this is as intended, but the reference doesn't say that so you'd expect the whole integer, all 4 bytes, to be written.

Expected Behavior

I'd expect the serial.write() to accept all the formats given in the reference. Assuming that the code is working correctly, then the reference should have examples of each possibility write(byte[]), byte, String, int. (I've only tested int.) No examples with multiple parameters.

I'd expect write(int) to send the whole integer, or if the help states that it only sends the least-sig byte, then 1 byte will do.

Current Behavior

Serial.write does not accept the reference multi-parameter examples.

The method write(int) in the type Serial is not applicable for the arguments (int, String)
The method write(int) in the type Serial is not applicable for the arguments (String, int)

Serial.write(int) sends only the least-sig byte.

Steps to Reproduce

Processing code.

  • Comment in lines 28,29 and they are not accepted.
  • Sends int to Ard at 1Hz. Prints out the returned text.) You can see that Ard is getting only the least sig-byte.
final boolean T = true;
final boolean F = false;

import processing.serial.*;

Serial port; 

byte b1;
int i1 = 0;
long l1;

void setup() {
  frameRate(10);
  size(140, 80);
  port = new Serial(this, "COM13", 9600);
  noStroke();
  smooth();
}



void draw() {
  boolean inComing = F;
  char ch;
  if (frameCount > 50 && frameCount % 10 == 0) {
    b1 = (byte) i1;
    l1 = i1;

    //port.write(i1, "");
    //port.write("", i1);    
    
    port.write(i1);
    print(String.format("X %d ",l1));
    i1 += 53;
  }
  if (port.available() > 0)  {print("R "); inComing = T; delay(10);}
  while (port.available() > 0)
  {
    ch = (char) port.read();
    print(ch);
  }
  if (inComing) {print(" "); inComing = F;}
}

Arduino Code

#define pM pinMode
#define dW digitalWrite

int i1;
int led = 7;

void setup()
{
  Serial.begin(9600);

  Serial.println();
  Serial.println(__FILE__);
  Serial.println(__DATE__);
  Serial.println(__TIME__);


  pM(led, OUTPUT);
}

void loop()
{  
  dW(led, 0);
  if (Serial.available() > 0) {
    i1 = Serial.read(); 
    dW(led, 1);
    Serial.print(i1);
  }
  delay(10);
}

Output:

X 0 R 0 X 53 R 53 X 106 R 106 X 159 R 159 X 212 R 212 X 265 R 9
X 318 R 62 X 371 R 115 X 424 R 168 X 477 R 221 X 530 R 18
X 583 R 71 X 636 R 124 X 689 R 177 X 742 R 230 X 795 R 27
X 848 R 80 X 901 R 133

X is the value Processing has, continues increasing. Arduino is sending back value of only 1 byte, limited to 255.

Your Environment

Windows-10, Processing 4.0b3, Ard 1.8.5, Ard-Nano.

Possible Causes / Solutions

Which is right, the serial.write() behaviour, or the reference? Why was the documentation changed between Processing 3 and 4. The easy solution is to make the reference match the current behaviour. Only 1 parameter of 3 types.

For the write(int) add the reference line, something like "with an integer parameter the least-significant byte is sent (value 0..255).

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Mở tài liệu tham khảo Serial.write được liên kết và so sánh các ví dụ về tham số của tài liệu đó với hành vi một đối số được thể hiện trong sketch Processing và đầu ra Arduino. Cập nhật tài liệu tham khảo để các chữ ký được hỗ trợ và hành vi của byte ít quan trọng nhất là chính xác, sau đó xác minh rằng các ví dụ không còn cho rằng có thể gọi với nhiều tham số.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
arduino
Lĩnh vực
documentation, embedded-iot
Loại issue
Tài liệu
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
38/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.