serialPort_loopback-manual.https.html (3188B)
1 <!DOCTYPE html> 2 <meta name="timeout" content="long"> 3 <html> 4 <head> 5 <meta charset="utf-8"> 6 <title></title> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="resources/common.js"></script> 10 <script src="resources/manual.js"></script> 11 </head> 12 <body> 13 <p> 14 These tests require a connected serial device configured to act as a 15 "loopback" device, with the transmit and receive pins wired together. 16 </p> 17 <script> 18 manual_serial_test(async (t, port) => { 19 await port.open({baudRate: 115200, bufferSize: 1024}); 20 21 // Create something much smaller than bufferSize above. 22 const data = new Uint8Array(64); 23 for (let i = 0; i < data.byteLength; ++i) 24 data[i] = i & 0xff; 25 26 const reader = port.readable.getReader(); 27 28 for (let i = 0; i < 10; ++i) { 29 const writer = port.writable.getWriter(); 30 writer.write(data); 31 const writePromise = writer.close(); 32 33 const value = await readWithLength(reader, data.byteLength); 34 await writePromise; 35 36 compareArrays(value, data); 37 } 38 39 reader.releaseLock(); 40 await port.close(); 41 }, 'Can perform a series of small writes.'); 42 43 manual_serial_test(async (t, port) => { 44 await port.open({baudRate: 115200, bufferSize: 1024}); 45 46 // Create something much larger than bufferSize above. 47 const data = new Uint8Array(10 * 1024); 48 for (let i = 0; i < data.byteLength; ++i) 49 data[i] = (i / 1024) & 0xff; 50 51 const reader = port.readable.getReader(); 52 53 for (let i = 0; i < 10; ++i) { 54 const writer = port.writable.getWriter(); 55 writer.write(data); 56 const writePromise = writer.close(); 57 58 const value = await readWithLength(reader, data.byteLength); 59 await writePromise; 60 61 compareArrays(value, data); 62 } 63 64 reader.releaseLock(); 65 await port.close(); 66 }, 'Can perform a series of large writes.'); 67 68 manual_serial_test(async (t, port) => { 69 await port.open({baudRate: 115200, bufferSize: 64}); 70 71 const writer = port.writable.getWriter(); 72 // |data| is small enough to be completely transmitted. 73 let data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); 74 await writer.write(data); 75 76 // Wait a little bit for the device to process the incoming data. 77 await new Promise((resolve) => setTimeout(resolve, 100)); 78 // ...before discarding the receive buffers. 79 await port.readable.cancel(); 80 81 data = new Uint8Array([9, 10, 11, 12, 13, 14, 15, 16]); 82 const reader = port.readable.getReader(); 83 const readPromise = readWithLength(reader, data.byteLength); 84 85 // The next block of data should be received successfully. 86 await writer.write(data); 87 writer.releaseLock(); 88 89 const value = await readPromise; 90 reader.releaseLock(); 91 92 compareArrays(value, data); 93 94 await port.close(); 95 }, 'Canceling the reader discards buffered data.'); 96 </script> 97 </body> 98 </html>