ไม่มีที่เก็บข้อมูลใน CH340 และตระกูล UART ที่คุณสามารถใส่ ID เฉพาะได้ นี่เป็นปัญหาสำหรับรุ่น PL2303 ด้วย ฉันพยายามค้นหาวิธีแก้ไขปัญหานี้แล้ว สิ่งแรกและง่ายที่สุดคือตำแหน่งของอุปกรณ์บนบัส USB มันจะไม่ซ้ำกันสำหรับแต่ละอุปกรณ์ หากคุณใช้ linux คุณสามารถค้นหาแต่ละอุปกรณ์ภายใต้ / dev / serial / by-path นอกจากนี้ยังมี / dev / serial / by-id แต่จะมีเพียงหนึ่งรายการสำหรับอุปกรณ์นี้เพราะจะแสดงรายการล่าสุดที่เชื่อมต่อ ชิป FTDI แต่ละคนจะมีรายการที่ไม่ซ้ำกันที่นี่ ชิปราคาถูกจะไม่ แต่พวกเขาแต่ละคนมีรายการภายใต้ / dev / อนุกรม / โดยเส้นทาง ตำแหน่งนี้และชื่ออุปกรณ์ควรคงอยู่ตลอดการบู๊ตเครื่อง หากคุณมีการเปลี่ยนแปลงอุปกรณ์ USB จำนวนมากให้เสียบอุปกรณ์ CH340 ทั้งหมดเข้ากับฮับเดียวกันจากนั้นเสียบอุปกรณ์ดังกล่าว อุปกรณ์จะแจกแจงตามลำดับที่เสียบเข้ากับฮับ เคล็ดลับหนึ่งฮับนี้ควรใช้งานได้กับ MacOS และ windows ด้วยเช่นกันพวกเขาควรอยู่ในลำดับเดียวกัน
กฎระเบียบวิธีที่ยากขึ้น สำหรับอุปกรณ์ที่มี ID เฉพาะเช่น FTDI คุณสามารถตั้งค่ากฎ udev ที่เห็นว่ามันเป็นหมายเลขซีเรียลแล้วสร้าง symlink ให้กับอุปกรณ์นั้นมันตรงไปตรงมา
สำหรับอุปกรณ์ที่มีหมายเลขซีเรียลเหมือนกันหรือไม่มีหมายเลขซีเรียลก็ซับซ้อนกว่ามาก ฉันสร้างกฎ udev ที่มีลักษณะเช่นนี้:
SUBSYSTEM == "tty", ATTRS {product} == "USB2.0- อนุกรม", RUN + = "/ usr / local / bin / cheapduinoia %% k", ATTRS {idVendor} == "1a86", ATTRS { idProduct} == "7523", ENV {ID_MM_DEVICE_IGNORE} = "1"
เมื่ออุปกรณ์ตรงกับผลิตภัณฑ์และผู้จำหน่ายของ arduino ราคาถูกมันจะเรียกใช้สคริปต์ 'cheapduino.py' กับอุปกรณ์เป็นอาร์กิวเมนต์เช่น
cheapduino.py ttyUSB0
จากนั้นสคริปต์ cheapduino จะเชื่อมต่อแบบอนุกรมกับอุปกรณ์และส่งสตริง 'ID' และซอฟต์แวร์บนอุปกรณ์จะตอบสนอง DEVID = THX1138 หรืออะไรก็ตาม จากนั้นสคริปต์จะสร้าง symlink / dev / THX1138 ซึ่งชี้ไปที่ / dev / ttyUSB0
มีข้อเสียมากมายกับวิธีนี้ สคริปต์จะต้องหมดเวลาหากซอฟต์แวร์ใน cheapduino ไม่ตอบ นอกจากนี้สิ่งนี้ไม่ได้ใช้ฟังก์ชั่น SYMLINK ของ udev ดังนั้นมันจะไม่ล้างลิงก์ที่ไม่ทำงานเมื่อยกเลิกการเชื่อมต่อ cheapduinos ทั้งหมดของคุณจะต้องมีฟังก์ชั่นนี้ในซอฟต์แวร์ของพวกเขาด้วยชุดอุปกรณ์ต่าง ๆ พวกเขาทุกคนจะต้องใช้อัตรารับส่งข้อมูลเดียวกันกับสคริปต์เว้นแต่คุณต้องการเขียนสคริปต์ที่ซับซ้อนมากซึ่งใช้เวลานาน ในที่สุดวิธีนี้ทำงานได้ดีกว่ามากในอัตราบอดต่ำกว่าอัตราบอดสูงซึ่งด้วยเหตุผลด้านเวลาอาจไม่สำเร็จทุกครั้ง (cheapduinos ราคาถูก!) 9600 ทำงานได้ดีกว่า 115200 ซึ่งสามารถใช้งานได้หลายครั้ง แต่เนื่องจากอาร์ดิโน CH340 ทั้งหมดของคุณต้องมีความเร็วเท่ากันกับวิธีนี้คุณจึงสามารถทำได้ช้าเท่ากับอุปกรณ์ที่เร็วที่สุด
วิธีนี้ใช้ได้ผลและมันเป็นสิ่งที่ฉันใช้เพราะฉันซื้อของเหล่านี้ในราคาถูกมากเกินไป
ในที่สุดซื้อ Arduinos ของแท้หรืออย่างน้อยกับชิป FTDI หรืออย่างอื่นที่ส่งรหัสอุปกรณ์ที่ไม่ซ้ำกัน
= รวย