Savelyev_Vyacheslav

readNFC

Dec 2nd, 2024
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. async function readNFC() {
  2.     try {
  3.       // Очищаем debugMessage перед началом работы
  4.       s_widget.setFieldValue('debugMessage', "");
  5.       const ndef = new NDEFReader();
  6.  
  7.  
  8. const ndefJson = {
  9.   // Вы можете указать конкретные свойства, если требуется
  10.   type: ndef.constructor.name,
  11. };
  12.  
  13. s_widget.setFieldValue('debugMessage2', JSON.stringify(ndefJson, null, 2));
  14.      
  15.       await ndef.scan();
  16.       console.log("> Scan started");
  17.       s_widget.setFieldValue('debugMessage', "> Scan started");
  18.  
  19.       // Используем промисы для обработки событий
  20.       const readingPromise = new Promise((resolve, reject) => {
  21.         ndef.addEventListener("reading", ({ message, serialNumber }) => {
  22.           console.log(`> Serial Number: ${serialNumber}`);
  23.           s_widget.setFieldValue('debugMessage', `> Serial Number: ${serialNumber}`);
  24.          
  25.           console.log(`> Records: (${message.records.length})`);
  26.           s_widget.setFieldValue('debugMessage', `> Records: (${message.records.length})`);
  27.  
  28.           // Получаем первую запись
  29.           const record = message.records[0];
  30.    
  31.  
  32.           if (record) {
  33.             console.log(`Record Type: ${record.recordType}`);
  34.             s_widget.setFieldValue('debugMessage', `Record Type: ${record.recordType}`);
  35.            
  36.             console.log(`MIME Type: ${record.mediaType || "N/A"}`);
  37.             s_widget.setFieldValue('debugMessage', `MIME Type: ${record.mediaType || "N/A"}`);
  38.  
  39.             // Преобразование данных в текст
  40.             const textDecoder = new TextDecoder();
  41.             const decodedData = textDecoder.decode(record.data);
  42.             console.log(`Message: ${decodedData}`);
  43.             s_widget.setFieldValue('debugMessage', `Message: ${decodedData}`);
  44.            
  45.             resolve(decodedData); // Resolve, когда данные считаны
  46.           } else {
  47.             console.log("No records found on this NFC tag.");
  48.             s_widget.setFieldValue('debugMessage', "No records found on this NFC tag.");
  49.             reject("No records found");
  50.           }
  51.         });
  52.  
  53.         ndef.addEventListener("readingerror", () => {
  54.           console.log("Argh! Cannot read data from the NFC tag. Try another one?");
  55.           s_widget.setFieldValue('debugMessage', "Argh! Cannot read data from the NFC tag. Try another one?");
  56.           reject("Reading error");
  57.         });
  58.       });
  59.  
  60.       // Ждем завершения обработки
  61.       const message = await readingPromise;
  62.       console.log("Message read successfully:", message);
  63.     } catch (error) {
  64.       s_widget.setFieldValue('debugMessage', "Argh! " + error);
  65.       console.log("Argh! " + error);
  66.     }
  67.  
  68.     const selectorID = `${index}${userType}`; // Just the selector, no `row.user`
  69.   console.log('selectorID', selectorID)
  70.     document.querySelector('.assigned_executor .violation-text').children[0].value = s_widget.getFieldValue('debugMessage2');
  71.     // el.comment = 'reader.result3'
  72.     // s_widget.getFieldValue('debugMessage')
  73.  
  74.     // renderTable(); // Re-render the table after the image has been added
  75.   }
  76. //   // Вызываем асинхронную функцию
  77.   readNFC();
Advertisement
Add Comment
Please, Sign In to add comment