Tôi hiện đang viết một ứng dụng Android có chức năng như một đài phát thanh internet. Một phần của chức năng của ứng dụng là nó có thể điều khiển thông qua điều khiển từ xa hồng ngoại. Các mã từ xa hồng ngoại xuất hiện dưới dạng âm thanh analog thông qua cổng micrô. Nếu tôi ghi lại một số tín hiệu và nhìn vào chúng trong Audacity, nó rất dễ dàng cho tôi để xem mỗi mã là gì. Ví dụ: sau đây là 0111111010011001011111101000001 hoặc 0x3F4CBF41. Câu hỏi của tôi là làm cách nào để tôi có thể phát hiện các tín hiệu này theo chương trình khi chúng đến và chuyển đổi chúng thành số mã nguyên. Tôi đã xem xét một số giải pháp đóng gói như LIRC, nhưng chúng được viết bằng C và sẽ rất khó để tích hợp. Nó cũng có vẻ như với tôi như bản địa sẽ được hơn giết để làm phân tích đơn giản như vậy. Tôi cũng nhìn vào các thư viện như musicg, nhưng tôi không thể tìm thấy bất kỳ cách nào dễ dàng để chuyển đổi các mã trong thời gian thực.Giải mã các mã điều khiển từ xa thông qua đầu vào âm thanh
Trả lời
Có vẻ như rõ ràng từ câu hỏi của bạn rằng bạn đã quen thuộc với PWM và phương pháp đọc tín hiệu nhận được từ bộ thu IR. Như vậy, tôi đã xem xét cách bạn có thể sử dụng java để lưu trữ dữ liệu trong một phương thức mà bạn có thể giải thích dễ dàng như cửa sổ audacity của bạn.
Có một vài phương pháp trong javax.sound.sampled.spi Điều tôi nghĩ sẽ hữu ích.
Đầu tiên là getAudioStream() trong AudioFileReader
. Điều này trả về một AudioStream
có một vài phương pháp có thể hữu ích hơn. Cái tôi thấy là tiện dụng nhất cho mục đích của bạn là read() sẽ trả về byte tiếp theo trong luồng. Bạn có thể cung cấp một mảng byte để đọc các phần hoặc thậm chí toàn bộ luồng trong cũng nếu điều đó thuận tiện hơn. Vì vậy, bây giờ bạn có một danh sách hoặc một mảng các byte, và bạn có thể diễn giải chúng cao hay thấp theo chu kỳ đều đặn (vì đây là âm thanh lấy mẫu, thời gian giữa mỗi byte là hằng số), tất cả những gì bạn cần để giải mã PWM !
Bằng cách tìm điểm cuối gần đúng, bạn có thể biến mẫu byte theo thời gian thành mẫu có thời lượng cao/thấp. Vì tôi biết bạn có thể đọc điều đó (được minh họa trong câu hỏi của bạn), tôi sẽ bỏ qua chuyển đổi theo nghĩa đen, nhưng nó là tầm thường để chuyển đổi hhhlhllhhhhhhlllhh
thành biểu diễn mã thập lục phân.
TL; DR: Ghi luồng, đọc từng byte, chuyển đổi theo thời gian, chuyển đổi thành nhị phân.
Cảm ơn bạn đã trả lời. Tôi đã theo lời khuyên của bạn và tôi chắc chắn đang tiến bộ. Ngay bây giờ những gì tôi hiểu là cách các khung hình dường như dao động nhiều hơn so với trong Audacity. Chúng dội ngược lại giữa các số dương và âm trong vài lần trong một xung. Bạn có thể nghĩ ra lời giải thích không? – krispy
thử thay đổi tỷ lệ mẫu của bạn. –
Bạn có thể cần phải xử lý dữ liệu cảm biến hồng ngoại. Lấy mẫu ở một tỷ lệ rất cao, sau đó thời gian trung bình mẫu để có được một tín hiệu trơn tru. ví dụ t = 9/10 * t + 1/10 * t0 –
- 1. iOS 4: Điều khiển từ xa cho âm thanh nền
- 2. Giải mã định dạng âm thanh ima4
- 3. iOS: Thiết bị âm thanh Thao tác điều khiển từ xa AudioXuffer (tức là hiệu ứng âm thanh từ micrô)
- 4. Nhận các sự kiện điều khiển từ xa không có âm thanh
- 5. Đầu vào âm thanh qua HTML5?
- 6. Giải mã luồng đầu vào
- 7. Gọi mã Obj-C từ JavaScript thông qua Bảng điều khiển: Các đối số bị xóa?
- 8. Điều khiển âm thanh Bluetooth trong Android
- 9. Giải mã âm thanh bằng cách sử dụng MediaStreamSource
- 10. Thêm mã trình điều khiển mới vào mã nguồn linux
- 11. Cách gọi Giải mã âm thanh SPEEX/Mã hóa bằng HTML5/JavaScript (Không có Flash)
- 12. Công cụ âm thanh mã nguồn mở
- 13. Mã hóa điện thoại Windows và giải mã âm thanh bằng NSpeex. Có vấn đề với giải mã?
- 14. tvOS - điều khiển trò chơi qua điều khiển từ xa không phải Siri
- 15. MVC điều khiển âm thanh chơi bài hát từ byte
- 16. Phát âm thanh có các nút điều khiển trong iOS
- 17. Kết nối với máy chủ SSH từ xa (thông qua giao diện điều khiển Node.js/html5)
- 18. VLC điều khiển từ xa từ C#
- 19. Cách phát tệp âm thanh từ mã Haskell, nền tảng
- 20. API điều khiển từ xa cho Spotify?
- 21. Đang tải điều khiển ASCX được tạo động (thông qua mã)
- 22. Sử dụng OpenMAX (IL?) Để giải mã âm thanh/video trên Android
- 23. Không thể nhận luồng đầu vào âm thanh từ luồng đầu vào
- 24. Ghi lại đầu vào âm thanh từ micrô, với Haskell?
- 25. Cách tạo âm thanh từ đầu C#
- 26. Thủ công giải mã mã thông báo OAuth trong C#
- 27. Âm thanh đầu ra qua loa khi không đăng nhập
- 28. điều khiển âm lượng micrô từ javascript
- 29. Tải mã từ xa Android
- 30. cách mã trình điều khiển?
Tôi không chắc mình hiểu thông tin nào bị thiếu ở đây. Tôi có nên đính kèm tệp âm thanh chứa dữ liệu không? Cho đến nay ứng dụng của tôi không ghi và lưu dữ liệu. Nó đi kèm như một tín hiệu tương tự thông qua cổng micro. Sau khi nó được xử lý đầu ra duy nhất tôi mong đợi là một số nguyên đại diện cho mã từ xa như tôi đã đề cập trong câu hỏi. Bạn có thể cụ thể hơn về những gì còn thiếu? Đối với sự phức tạp, tôi dành rất nhiều thời gian viết các ứng dụng thị giác máy tính. Tôi giả định rằng điều này sẽ tương tự về độ phức tạp. Là tôi sai? – krispy
@Xaver là một người đã phát triển các giải pháp độc quyền cho một nhu cầu tương tự, tôi phải đồng ý với người đăng, thông tin cần thiết đã được cung cấp. Câu hỏi của bạn là sự tò mò chỉ tiếp tuyến với câu hỏi của bài đăng. –