עזרה בתקשורת ליציאה טורית בקוד node.js
-
בס"ד
אני מנסה לחבר משקל דיגטלי בחיבור של rs232 ולקבל בnode.js את הפלט שלו,
ניסיתי להשתמש בספרייה serialport עם כל מיני דוגמאות - ללא הצלחה.
עברתי על התגובות לבעיה זו כאן, רובם(לא כולם) הבנתי וניסיתי - ללא הצלחה
מצ"ב הקוד והשגיאהapp.js
const serial = require("serialport"); const ReadLine = require("@serialport/parser-readline"); const port = new serial.SerialPort("COM5", { baudRate: 9600, }); const parser = new ReadLine(); port.pipe(parser); parser.on("data",(line) => console.log(line)); port.write("mishkal is conect!");
השגיאה:
C:\Users\User\Desktop\משקל\node_modules\@serialport\stream\dist\index.js:50 throw new TypeError(`"path" is not defined: ${settings.path}`); ^ TypeError: "path" is not defined: undefined at new SerialPortStream (C:\Users\User\Desktop\משקל\node_modules\@serialport\stream\dist\index.js:50:19) at new SerialPort (C:\Users\User\Desktop\משקל\node_modules\serialport\dist\serialport.js:13:9) at Object.<anonymous> (C:\Users\User\Desktop\משקל\app.js:5:14) at Module._compile (internal/modules/cjs/loader.js:1137:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10) at Module.load (internal/modules/cjs/loader.js:985:32) at Function.Module._load (internal/modules/cjs/loader.js:878:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) at internal/main/run_main_module.js:17:47
הקבצים:
תודה מראש לכל המסייעים
-
@avi-rz כתב בעזרה בתקשורת ליציאה טורית בקוד node.js:
ניסיתי להשתמש בספרייה serialport
ראה את הדוגמה פה:
https://serialport.io/docs/guide-usageמייד אתה מבין מה השגיאה שהייתה לך עם הpath not defined.
-
@dovid כתב בעזרה בתקשורת ליציאה טורית בקוד node.js:
ראה את הדוגמה פה:
https://serialport.io/docs/guide-usage
מייד אתה מבין מה השגיאה שהייתה לך עם הpath not defined.כן עברתי ע"ז קודם, באמת סידרתי את זה,
הבעיה הייתה שהעתקתי את הקוד מהרשת וכו', כנראה בשינויי גירסאות זה לא בדיוק נשאר ככה, ובדקתי לפי האובייקטים כיצד באמת לקחת את האובייקט הנכון ולהשתמש בו.
בנוגע לשגיאה לעיל, היה צריך להחליף את השורה הזאת:const port = new serial.SerialPort("COM5", { baudRate: 9600, });
לזה, (כלומר להכניס את השם של היציאה לתוך האופציות)
const port = new serial.SerialPort( { baudRate: 9600, path: "COM5", });
נ.ב. גם הקישור לעיל הוא לבעיה שהייתה לי קודם, שגם איך שהוא הסתדר,
לע"ע כשאני לא מחובר למשקל הוא כותב לו file not found וכשאני מחובר למשקל אז הוא בעצם מחכה למשהו, כנראה בקוד צריך לראות איך לשלוף משם את הנתונים,
יש לי קוד VBA שעבד פעם.
חיבור:If MSComm1.PortOpen = False Then MSComm1.CommPort = Val(3) MSComm1.PortOpen = True End If
שליפה:
If MSComm1.PortOpen = True Then a = "W" MSComm1.Output = a MSComm1.InputLen = 10 mishkal = Mid(MSComm1.Input, 2, 6) End If
זה נראה בעצם שבחיבור הוא נותן לו את המספר של היציאה (COM3) ומפעיל (True) ב open.
ובקריאה הוא פשוט מכניס ערך כלשהו ושולף ומסנן את מה שהכניס.אממה, לא כ"כ הבנתי באלו פונקציות עושים את זה בספרייה הנ"ל.